Создание экземпляра объекта JUnit TestCase
-
05-07-2019 - |
Вопрос
Используется ли новый (или другой) экземпляр объекта 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 ().
Да, определенно. Я обнаружил, что данные, хранящиеся в переменных экземпляра, не могут быть доступны между тестами из-за этого дизайна.