我是单元测试的新手。我正在使用 TestNG 和 MyEclipse 为我的应用程序开发单元测试用例。在这样做时,我遇到了 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”
我在这里做错了什么?有人可以阐明如何为我的特定场景编写测试用例吗?