Как я могу узнать, выполняется ли код внутри теста JUnit или нет? - PullRequest
51 голосов
/ 26 февраля 2010

В моем коде мне нужно делать определенные исправления только тогда, когда он запускается внутри теста JUnit. Как я могу узнать, выполняется ли код внутри теста JUnit или нет? Есть ли что-то вроде JUnit.isRunning () == true?

Ответы [ 11 ]

0 голосов
/ 21 июня 2015

это не строго связано с вопросом пользователя, но я вполне уверен, что кто-то, кто туда доберется, может найти это полезным.

Я использую следующий подход: выставить пакетный локальный конструктор, который будет использоваться из тестов.

, например

SRC / главная / Java / ApplicationService.java

public class ApplicationService {
  private final Integer someInternalObject;

  public ApplicationService(String somePublicArgument) throws NumberFormatException {
    someInternalObject = Integer.valueOf(somePublicArgument, 16);
  }

  ApplicationService(Integer someInternalObject) {
     this.someInternalObject = someInternalObject;
  }
}

SRC / тест / ApplicationServiceTest.Java

public class ApplicationServiceTest {
  @Test
  public void testSomething() throws Exception {
    ApplicationService applicationService = new ApplicationService(0);
  }
}

выставить его на все тесты

не выпускные классы

Расширьте его в тестах и ​​предоставьте открытый конструктор для локального или защищенного пакета.

выпускные занятия

Создайте открытый Factory Method в том же пакете (в тестах), который создаст его с помощью конструктора package-local.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...