我是單元測試的新手。我使用TestNG和MyEclipse爲我的應用程序開發單元測試用例。在做這件事時,我遇到了EasyMock的一些問題。這裏是我的代碼(類的名稱,方法名稱和返回類型由於安全原因而改變,但您會清楚地知道我在這裏實現的目標)。使用EasyMock測試異常的方法
public MyClass
{
// This is a method in my class which calls a collaborator which I
// want to mock in my test case
public SomeObject findSomething(SomeOtherObject param) throws Exception
{
SomeOtherObject param a = myCollaborator.doSomething(param);
// Do something with the object and then return it
return a;
}
}
現在這裏是我的測試。現在我真的想在我的測試 的情況下實現的是,我想檢查我的函數(findSomething)正確 在拋出異常時拋出異常。在將來一些 其他開發人員可以更改該方法的簽名(拋出異常不是 方法簽名的一部分),並從我的方法中刪除拋出異常。那麼我怎樣才能確保沒有人更改 呢?
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class)
public void MyTest(SomeOtherObject param) throws Exception {
{
EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception());
EasyMock.replay(myCollaboratorMock);
}
我得到異常
「java.lang.IllegalArgumentException異常:最後 方法叫上模擬不能扔java.lang.Exception的」
我什麼 做錯了這裏?有人可以在我的特定情況下闡述如何撰寫測試 的案例嗎?
錯誤。通過使用[generic quirks](http://java.dzone.com/articles/throwing-undeclared-checked),可以從幾乎所有地方拋出檢查的異常。 – jontejj