Вопрос

Используется ли новый (или другой) экземпляр объекта TestCase для запуска каждого метода тестирования в тестовом примере JUnit? Или один экземпляр повторно используется для всех тестов?

public class MyTest extends TestCase {
  public void testSomething() { ... }
  public void testSomethingElse() { ... }
}

Во время выполнения этого теста сколько экземпляров класса MyTest создано?

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

Это было полезно?

Решение

Я не смог найти четкого ответа в документации JUnit по вашему вопросу, но намерение, как писал anjanb, заключается в том, что каждый тест независим от других, поэтому для каждого теста можно создать новый экземпляр TestCase. работать.

Если у вас есть дорогая настройка теста (" fixtures "), которую вы хотите использовать во всех тестовых случаях в классе теста, вы можете использовать @BeforeClass аннотация статического метода для достижения этого результата: http: //junit.sourceforge .net / javadoc_40 / орг / JUnit / BeforeClass.html . Обратите внимание, что новый экземпляр все еще может быть создан для каждого теста, но это не повлияет на статические данные, которые инициализировал ваш метод @BeforeTest.

Другие советы

Да, создается отдельный экземпляр.

Во время выполнения этого теста создаются 2 экземпляра MyTest.

Если вам нужно другое поведение, одним из вариантов является использование аналогичного инструмента под названием TestNG ( http://testng.org / DOC / ).

Существует один экземпляр для каждого теста. Попробуйте

public class MyTest extends TestCase {
  public MyTest() { System.out.println("MyTest Constructor");
  public void setUp() { System.out.println("MyTest setUp");
  public void tearDown() { System.out.println("MyTest tearDown");
  public void testSomething() { System.out.println("MyTest testSomething");
  public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}

Исходный код (в том числе для более новых версий - ваш и мой пример - Junit 3) находится на http: // www. junit.org

Если вы спрашиваете об этом, потому что вы обеспокоены тем, что данные инициализируются и повторно инициализируются в вашем конструкторе, имейте в виду, что предписанный способ инициализации данных ваших тестовых примеров - исключительно через setUp () и tearDown ().

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top