我正在为一种方法编写 junit 测试用例。这样做时,在调用另一个 void 方法的行中存在异常。因此,下一行受到影响。我想跳过这一行并继续执行。任何人都请建议我解决方案。
helperObject.methodCall(session);//Exception occurred inside this mthd
httpResponse = buildSuccessResponse(ccId);
Run Code Online (Sandbox Code Playgroud)
因此,无论第一行发生什么异常,我都希望执行第二行。(由于异常,我无法获得代码覆盖率)。
似乎您不了解单元测试的概念:这个想法是,您完全执行一个方法。意思是:您永远不希望您的测试只调用您稍后将发送给客户的确切“生产”代码。测试特定于测试的代码没有意义。您始终测试将在客户处运行的代码!
因此:如果您认为测试用例需要“排除”“被测代码”的某些部分;那么不:你不这样做。
相反,您了解该异常的来源,然后您决定该异常是否表明您的生产代码中存在错误;或者如果该异常意味着您的单元测试需要做一些更多的设置工作。
例子:
class ProductionThingy {
private DataBaseWhatever whatever;
int foo() {
whatever.doSomething();
return computeSomethingElse();
}
}
Run Code Online (Sandbox Code Playgroud)
测试:
class ProductionThingyTest {
@Test
public void testFoo() {
ProductionThingy underTest = new ...
assertThat(underTest.foo(), is(some expected value))
Run Code Online (Sandbox Code Playgroud)
所以,如果你现在想测试这个 foo() 方法......并且测试因为 NullPointerException 而失败(因为该字段是空的)那么解决方案不是神奇地排除该 call whatever.doSomething()。
你要做的是确保你的 ProductionThingy underTest对象在“whatever”中确实有一个非空值;例如使用依赖注入来提供DataBaseWhatever的模拟实例。
| 归档时间: |
|
| 查看次数: |
8351 次 |
| 最近记录: |