JupiterApi, как получить результат выполненного теста?

Всем привет! Появилась проблема с получением результата теста

import static org.junit.jupiter.api.Assertions.fail;

import org.junit.Rule;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.condition.EnabledIf;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class DisablingTest {

  boolean isTestPassed;

  @Rule
  public TestWatcher watchman= new TestWatcher() {
    @Override
    protected void failed(Throwable e, Description description) {
      isTestPassed = false;
    }

    @Override
    protected void succeeded(Description description) {
      isTestPassed = true;
    }
  };

  public boolean isTestPassed() {
    return isTestPassed;
  }

  @Test
  @Order(1)
  @EnabledIf(value = "isTestPassed")
  void firstTest() {
    System.out.println("Тест 1 запустился");
    fail();
  }

  @Test
  @Order(2)
  @EnabledIf(value = "isTestPassed")
  void secondTest() {
    System.out.println("Тест 2 запустился");
  }

  @Test
  @Order(3)
  @EnabledIf(value = "isTestPassed")
  void thirdTest() {
    System.out.println("Тест 3 запустился");
  }
}

Идея заключается в том, чтобы после упавшего теста, все остальные тесты в классе были skipped. Но я столкнулся с проблемой, заключается она в том, что чтобы реализовать @Rule я должен использовать org.junit.Test , но в моем проект тесты реализованы через org.junit.jupiter.api.Test, может кто-нибудь знает, как получить результат выполненного теста в Jupiter API?


Ответы (1 шт):

Автор решения: fursaar

Спасибо!

Подтянул в проект https://junit-pioneer.org/docs/disable-if-test-fails/ , теперь всё работает как мне нужно)

→ Ссылка