如何停止/终止当前的测试用例?

时间:2018-07-16 13:25:01

标签: unit-testing junit automated-tests mockito robolectric

如果要与特定情况相匹配的测试,我想停止执行测试,以避免代码重复。

请考虑以下情况:

CoreProviderTest

  public void executeCoreSuccess(Object responseModel){
     assertNotNull("Response successful", responseModel != null);

     if (responseModel == null) {
        //Kill Test
     }
  }

ChildProviderTest -扩展了CoreProviderTest

 @Test
public void responseTester() {

    new Provider().getServiceResponse(new Provider.Interface() {
        @Override
        public void onSuccess(Object responseModel) {
            executeCoreSuccess(responseModel);
            //Continue assertions
        }

        @Override
        public void onFailure(ErrorResponseModel error) {
            executeCoreFailure(error);
        }
    });
}

对于null响应,我想在CoreProviderTest中杀死我当前的测试用例,否则可能会触发其他断言中的异常。我想避免这样的事情:

CoreProviderTest

if (responseModel == null) {
    return true;
}

ChildProviderTest

@Override
public void onSuccess(Object responseModel) {
   if (executeCoreSuccess(responseModel))
       return;

     //Continue assertions
}

有没有办法终止Mockito,JUnit或Roboletric的当前测试执行?到目前为止,没有运气来搜索答案。

预先感谢

2 个答案:

答案 0 :(得分:1)

如果您使用的是JUnit5,则它具有“假设”,“禁用测试”和“条件测试执行”之类的功能。 这是链接:

https://junit.org/junit5/docs/current/user-guide/#writing-tests-assumptions

在您的情况下,似乎假设那应该可行。这是API: https://junit.org/junit5/docs/5.0.0/api/org/junit/jupiter/api/Assumptions.html#assumingThat-boolean-org.junit.jupiter.api.function.Executable-

希望有帮助。

谢谢。

答案 1 :(得分:0)

JUnit Assumptions非常适合给定的情况。

代码段现在类似于:

CoreProvider

 public void executeCoreSuccess(Object responseModel){
    assumeTrue("Response successful",responseModel != null);
 }

根据JUnit文档:

  

失败的假设并不意味着代码已损坏,而是   测试没有提供有用的信息。假设基本上是指“不要运行   如果这些条件不适用,请执行此测试”。默认的JUnit运行器   跳过假设失败的测试。

+1 Adelin和Dossani