我在java類有方法:期待自定義異常,而不是空指針異常而JUnit的測試
@Context
UriInfo uriInfo;
public void processRequest(@QueryParam ("userId") @DefaultValue("") String userId)
{
String baseURI = uriInfo.getBaseUri().toString();
if(userId == null)
{
//UserIdNotFoundException is my custom exception which extends Exceptition
throw new UserIdNotFoundException();
}
}
當我的JUnit測試上面的方法爲預期時UserIdNotFoundException userid參數是空的,我得到以下聲明錯誤:expected an instance of UserIdNotFoundException but <java.lang.NullPointerException> is java.lang.NullPointerException
。
@Test
public void testProcessRequest_throws_UserIdNotFoundException()
{
expectedException.expect(UserIdNotFoundException.class);
processRequest(null);
}
我的自定義異常類:
public class UserIdNotFoundException extends Exception
{
public UserIdNotFoundException()
{
}
public UserIdNotFoundException(String message)
{
super(message);
}
}
我的執行如何在檢查之前觸發空指針異常。我不調用userId上的任何字符串方法。或者我沒有明白你的觀點。此外,我將userId作爲來自Url的查詢參數。唯一的可能是它可能涉及一些空的檢查。 – Ashley
您必須發佈processRequest的實現以供我爲您拼寫。一個更好,更教育的想法可能是在調試器中逐步完成該過程。在processRequest的第一行放置一個斷點,看看觀察到的行爲與您的期望不符。 – duffymo
我按照你的建議進行了調試。該錯誤顯示在行uriInfo.getBaseUri()。toString()它似乎。因此,我把這條線後if檢查。測試現在顯示綠色欄。但我仍然沒有得到理由。 – Ashley