Sam*_*m ツ 11 java testng easymock exception
我是单元测试的新手.我正在使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在这是我的考试.现在我在测试用例中实际想要实现的是,我想检查我的函数(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);
}
Run Code Online (Sandbox Code Playgroud)
我越来越异常了
"java.lang.IllegalArgumentException:在mock上调用的最后一个方法不能抛出java.lang.Exception"
我在这做错了什么?有人可以阐明如何为我的特定场景编写测试用例吗?
JB *_*zet 20
协作者的doSomething()方法没有声明它可能会抛出异常,并且你告诉它的模拟抛出一个.这是不可能的.
异常是一个经过检查的异常.只有在方法签名中声明它才能抛出它.如果该方法没有throws子句,它所能做的只是抛出运行时异常(即RuntimeException任何后代类).
| 归档时间: |
|
| 查看次数: |
12840 次 |
| 最近记录: |