跳过junit测试中的一行

跳过junit测试中的一行,junit,Junit,我正在为一个方法编写junit测试用例。执行此操作时,调用另一个void方法的行中出现异常。正因为如此,下一行受到影响。我想跳过这一行继续执行。任何人请给我建议解决方案 helperObject.methodCall(session);//Exception occurred inside this mthd httpResponse = buildSuccessResponse(ccId); 所以无论第一行中发生了什么异常,我都希望第二行被执行。(由于异常,我无法获得代码覆盖率)。您似乎不理

我正在为一个方法编写junit测试用例。执行此操作时,调用另一个void方法的行中出现异常。正因为如此,下一行受到影响。我想跳过这一行继续执行。任何人请给我建议解决方案

helperObject.methodCall(session);//Exception occurred inside this mthd
httpResponse = buildSuccessResponse(ccId);

所以无论第一行中发生了什么异常,我都希望第二行被执行。(由于异常,我无法获得代码覆盖率)。

您似乎不理解单元测试的概念:其思想是,您完全执行一个方法。意思是:你从来都不希望你的测试调用任何东西,除非是你以后将发送给客户的“生产”代码。测试特定于测试的代码是没有意义的。您总是测试将在客户机上运行的代码

因此:如果您认为测试用例需要“排除”您的“测试中的代码”的某些部分;那么不:你不会那样做的

相反,您了解该异常来自何处,然后决定该异常是否表示生产代码中存在错误;或者,如果该异常意味着您的单元测试需要进行更多的设置工作

例如:

class ProductionThingy {
    private DataBaseWhatever whatever;

    int foo() {
       whatever.doSomething();
       return computeSomethingElse();
    }
}
测试:

所以,如果您现在想测试这个foo()方法。。。测试失败是因为NullPointerException(例如,因为字段whater为null),然后解决方案是not,以神奇地排除调用
whater.doSomething()


相反,您要做的是确保ProductionThingy被测对象在“whatever”中具有非空值;例如,使用依赖项注入以提供DataBaseWhatever的模拟实例。

请提供相关代码。抱歉。我不能发布完整的代码。我已经给出了示例行。我喜欢高亮度的“从未”:-)是的,星号,他的兄弟星号星号是我最好的朋友。谢谢你的回答@Jägermeister。现在只有我开始写junit了。将检查methd调用中的代码。@欢迎您。无论如何;我建议您从一个(或多个)在线教程中学习“编写单元测试”。很难进入单元测试。。。通过“只是尝试”;使用来自不同搜索词的谷歌搜索结果的孤立信息。。。通过一个“完整的”教程更容易,它以一致的方式引导您完成单元测试的各个方面。
class ProductionThingyTest {

@Test
public void testFoo() {
  ProductionThingy underTest = new ...
  assertThat(underTest.foo(), is(some expected value))