Использование параметризованных тестов с JUnit - PullRequest
2 голосов
/ 31 января 2012

У меня есть класс, в котором один из открытых методов идеально подходит для параметризованных тестов. Также я читаю, что вы обычно сохраняете соответствие между тестовыми сценариями (класс, имеющий несколько методов с аннотированными методами @Test) и классами в проекте. Можно ли как-то использовать и Parameterized.class, и JUnitCore.class в качестве бегуна? Прямо сейчас, если я использую Parameterized, я не могу понять, как настроить непараметрическое тестирование методов. в том же тесте. Я думал о создании набора, который будет включать в себя Параметризованный тест и «обычные», но тогда кажется, что для того, чтобы сделать имена значимыми для тестовых случаев, я должен был бы связать имя тестового случая с именем метода, а не с классом, содержащим метод, который кажется стандартным способ.

Например

 public class MyClass {

     public int methodSuitableForParameterizedTest(int m){
         // Implementation
     }

     public int methodForRegularTest(int m) {
         // Implmentation
     }
 }

Могу ли я по-прежнему иметь один контрольный пример TestMyclass, который содержит не только параметризованное тестирование первого метода, но и параметризованное тестирование второго?

Ответы [ 2 ]

2 голосов
/ 31 января 2012

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

Проблема в том, чтов два раза, аннотация @RunWith для класса и конструктора.Для параметризованного теста вам понадобится @RunWith(Parameterized.class) и конструктор с аргументами.Для стандартного теста конструктор не имеет параметров.И JUnit проверяет, что у определенного класса есть только один конструктор.Вы можете сделать это, создав другого бегуна, но это не просто.

Я бы рекомендовал в этом случае иметь два тестовых класса.

1 голос
/ 05 декабря 2012

недавно я начал zohhak проект.позволяет писать:

@TestWith({
   "25 USD",
   "38 GBP",
   "null"
})
public void testMethod(Money money) {
   ...
}
...