Как я могу запустить (или изменить порядок) конкретных тестовых методов в тестовом классе JUnit?
Я новичок в Java. Я построил один тестовый класс JUnit, и внутри этого файла есть несколько методов тестирования. Когда я запускаю этот класс (в NetBeans), он запускает каждый тестовый метод в классе по порядку.
Вопрос 1: Как я могу запустить только определенный поднабор тестовых методов в этом классе?
(Потенциальный ответ: напишите @Ignore выше @Test для тестов, которые я хочу игнорировать. Однако, если я хочу указать, какие методы тестирования я хочу использовать, а не те, которые я хочу игнорировать, есть ли более удобный способ сделать это? )
Вопрос 2: Есть ли простой способ изменить порядок выполнения различных методов тестирования?
Спасибо.
Ответы
Ответ 1
Вы должны прочитать о TestSuite. Они позволяют группировать и заказывать ваши методы unit test. Здесь выдержка из формы в этой статье
"Сводные классы JUnit могут быть свернуты для запуска в определенном порядке путем создания тестовый комплект.
EDIT: Здесь пример, показывающий, насколько это просто:
public static Test suite() {
TestSuite suite = new TestSuite("Sample Tests");
suite.addTest(new SampleTest("testmethod3"));
suite.addTest(new SampleTest("testmethod5"));
return suite;
}
Ответ 2
Этот ответ рассказывает вам, как это сделать. Рандомизация заказа, который проходит тест, является хорошей идеей!
Как и комментарий из состояний фарфора, каждый unit test должен работать изолированно. Не должно быть никаких остатков и никаких заданных требований после или перед испытательным прогоном. Все ваши модульные тесты должны проходить прогон в любом порядке или в любом подмножестве.
Не страшная идея иметь или создать карту Test Case → List of Test, а затем случайным образом выполнить все тесты.
Ответ 3
Существует несколько подходов к этому, но это зависит от ваших конкретных потребностей. Например, вы можете разбить каждый из ваших тестовых методов на отдельные тестовые классы, а затем упорядочить их в разных наборах тестов (что позволит при необходимости перекрывать методы в наборах). Или более простым решением было бы сделать ваши методы тестирования обычными методами класса с одним методом тестирования в вашем классе, который вызывает их в вашем конкретном порядке. Вы хотите, чтобы их динамически называли?
Ответ 4
Я тоже давно не использую Java, но, насколько я видел, нет удобного метода меток для выполнения, а не игнорирования. Вместо этого я думаю, что это может быть достигнуто с помощью IDE. Когда я хочу сделать это в Eclipse, я могу использовать представление junit для запуска отдельных тестов, нажав на них. Я полагаю, что в Netbeans есть что-то подобное.
Я не знаю, как легко изменить порядок выполнения теста. В Eclipse есть кнопка для повторного запуска тестов с неудачными тестами, но похоже, что вы хотите что-то более универсальное.