2013-04-28 3 views
1

У меня есть программа, содержащая 3 параметризованных метода, которые получают аргументы из командной строки. Я хотел бы протестировать их, и я написал тест в JUnit, щелкнув правой кнопкой мыши на исходном классе и нажав новый тест Junit. В классе испытаний я аннотировал класс, как @RunWith(Parameterized.class), и параметризованные методы, как @Parameters и testmain, как @test.Параметрированный тест в JUnit

В каждом методе я создал ссылку для исходного класса, и я вызвал методы и передал необходимые параметры. Теперь есть ошибка инициализации, в которой говорится, что в тестовом классе нет открытых статических методов. Может ли кто-нибудь посоветовать мне, если это правильный способ проведения теста, а если нет, то какой способ это сделать.

Просто, чтобы сделать себе ясно, я приведу пример того, что я сделал до сих пор (это не исходный код.)

@RunWith(Parameterized.class) 
Public class customertest(){ 

@Parameters 
public testmethod1(String a, String b){ 
customer test = new customer(); 
test.method1(a, b); 
} 

@Parameters 
public testmethod2(String c, String d){ 
customer test = new customer(); 
test.method2(c, d); 
} 

@parameters 
public testmethod3(String e){ 
customer test = new customer(); 
test.method3(e); 

} 

@Test 
public static void testmain(String [] args){ 
customertest tester = new customertest(); 
tester.testmethod1(args[0], args[1]); 
tester.testmethod2(args[2], args[3]); 
tester.testmethod3(args[4]); 


} 




} 
+0

customertest - это класс, который имеет в нем модульные тесты? –

+0

Да и клиент - это класс, который я тестирую. – newtoprogramming

+0

, так что вам обязательно нужно создать экземпляр тестируемого класса, а не класса, который получает тесты –

ответ

2

Вы используете @Parameters совершенно неправильно (на самом деле, что у вас есть недопустимый синтаксис Java, поскольку методы testmethodsx не имеют возвращаемых значений).

См. Пример на этом site.

Должен быть только один метод @Parameters. Он должен быть static и вернуть Collection<Object[]>. Количество элементов в массиве должно быть равно количеству аргументов в конструкторе тестового класса.

В примере вы увидите, что FibonacciTest имеет конструктор, который принимает 2 аргумента. Каждый массив, возвращаемый методом @Parameteres, содержит 2 элемента. Эти элементы передаются конструктору, и тесты должны использовать поля для проведения специальных тестов.

+0

Большое спасибо. – newtoprogramming

+0

Я также рассмотрел этот пример и другие примеры. Но все они вводят значения для теста в методе @Parameters. Я хотел бы ввести значения из командной строки. Это возможно?? – newtoprogramming

+0

Хотя есть способы сделать это, я не думаю, что это подходит для JUnit. Вы можете сделать это с помощью системных переменных, но если вы делаете это для тестирования тестов, это плохой дизайн. –

Смежные вопросы