Как я могу запустить (или изменить порядок) конкретных тестовых методов в тестовом классе 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 есть кнопка для повторного запуска тестов с неудачными тестами, но похоже, что вы хотите что-то более универсальное.