Подтвердить что ты не робот

Может ли у JUnit testmethod аргумент?

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 = с аргументом

4b9b3361

Ответ 1

Вы должны взглянуть на параметризованные модульные тесты (введенные в JUnit 4).

Блог Дэниела Майера имеет пример этого.

Другим, более простым примером является веб-страница mkyong

Ответ 2

Да, вы можете с 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());

   }
 }

Подробнее:

Ответ 3

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

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

Ответ 4

Вы не можете напрямую передавать параметры методам тестирования с помощью 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