Ответ 1
Вы должны взглянуть на параметризованные модульные тесты (введенные в JUnit 4).
Блог Дэниела Майера имеет пример этого.
Другим, более простым примером является веб-страница mkyong
import java.util.regex.Pattern;
public class TestUI {
private static Pattern p = Pattern.compile("^[A-Za-z0-9()+-]+$");
public static void main(String[] args) {
// Test case1
String[] str=test();
System.out.println(str[0]+str.length);
match("Alphanumeric(Text)");
}
private static String[] test() {
boolean res;
String[] array={"a","b","c","d","e"};
for(int i=0;i<array.length;i++){
System.out.println(match(array[i]));
res=match(array[i]);
if(res=true)
calltomethod(array);
}
return array;
}
private static boolean match(String s) {
return p.matcher(s).matches();
}
}
В приведенном выше коде мне нужно передать массив как аргумент методу JUnit, указанный выше код будет присутствовать в классе JUnit, могу ли я иметь такие методы в классе JUnit и метод test = с аргументом
Вы должны взглянуть на параметризованные модульные тесты (введенные в JUnit 4).
Блог Дэниела Майера имеет пример этого.
Другим, более простым примером является веб-страница mkyong
Да, вы можете с Theories
Runner в JUnit 4.4
@RunWith(Theories.class)
public class TheorieTest {
@DataPoints
public static String[] strings={"a","b","c","d","e"};
private static Pattern p = Pattern.compile("^[A-Za-z0-9()+-]+$");
@Theory
public void stringTest(String x) {
assertTrue("string " + x + " should match but does not", p.matcher(x).matches());
}
}
Подробнее:
да, это возможно. Недавно я начал проект zohhak. он позволяет вам писать:
@TestWith({
"25 USD",
"38 GBP",
"null"
})
public void testMethod(Money money) {
...
}
Вы не можете напрямую передавать параметры методам тестирования с помощью JUnit. TestNG позволяет:
//This method will provide data to any test method that declares that its Data
// Provider is named "test1"
@DataProvider(name = "test1")
public Object[][] createData1() {
return new Object[][] {
{ "Cedric", new Integer(36) },
{ "Anne", new Integer(37)},
};
}
//This test method declares that its data should be supplied by the Data Provider
//named "test1"
@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
System.out.println(n1 + " " + n2);
}
напечатает:
Cedric 36
Anne 37