如何停止/杀死我当前的测试用例?

How to stop / kill my current test case?

我想在测试符合特定场景时停止执行以避免代码重复。

考虑以下情况:

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);
        }
    });
}

对于空响应,我想在 CoreProviderTest 中终止我当前的测试用例,否则可能会在进一步的断言中触发异常。我想避免这样的事情:

CoreProviderTest

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

ChildProviderTest

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

     //Continue assertions
}

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

提前致谢

如果您使用的是 JUnit5,它具有假设、禁用测试和条件测试执行等功能。 这是 link :

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

在你的情况下,看起来 assumingThat 应该有效。这是 API : https://junit.org/junit5/docs/5.0.0/api/org/junit/jupiter/api/Assumptions.html#assumingThat-boolean-org.junit.jupiter.api.function.Executable-

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

代码片段现在的样子:

CoreProvider

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

根据 JUnit 的文档:

A failed assumption does not mean the code is broken, but that the test provides no useful information. Assume basically means "don't run this test if these conditions don't apply". The default JUnit runner skips tests with failing assumptions.

+1 阿德林和多萨尼