Проблема Теории Юнит - PullRequest
       3

Проблема Теории Юнит

3 голосов
/ 01 октября 2010

Я пишу тестовый набор, в котором я хочу запустить один DataPoint для одного тестового случая и второй DataPoint для второго тестового набора.

@RunWith(Theories.class)
public class DummyTest {

    @DataPoints
    public static String[] getFileNames() {
        return new String[] { "firstFile.txt","firstFile1.txt" };
    }

    @Theory
    public void test1(String fileName) throws Exception {
        System.out.println(fileName);
        assertThat(true, is(equalTo(Boolean.TRUE)));
    }

    @DataPoints
    public static String[] getSecondFileNames() {
        return new String[] { "secondFile.txt","secondFile1.txt" };
    }

    @Theory
    public void test2(String fileName) throws Exception {
        System.out.println(fileName);
        assertThat(true, is(equalTo(Boolean.TRUE)));
    }

}

Я хочу, чтобы для первого контрольного примера вызывались мои первые точки данных, т.е. метод getFileNames, а для второго контрольного примера должны вызываться точки данных getSecondFileNames. Кто-нибудь может подсказать, возможно ли это?

Спасибо
Шекхар

Ответы [ 4 ]

5 голосов
/ 09 мая 2013

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

@RunWith(Theories.class)
public class DummyTest {

    @DataPoints("fileNames1")
    public static String[] getFileNames() {
        return new String[] { "firstFile.txt","firstFile1.txt" };
    }

    @Theory
    public void test1(@FromDataPoints("fileNames1") String fileName) throws Exception {
        System.out.println(fileName);
        assertThat(true, is(equalTo(Boolean.TRUE)));
    }

    @DataPoints("fileNames2")
    public static String[] getSecondFileNames() {
        return new String[] { "secondFile.txt","secondFile1.txt" };
    }

    @Theory
    public void test2(@FromDataPoints("fileNames2") String fileName) throws Exception {
        System.out.println(fileName);
        assertThat(true, is(equalTo(Boolean.TRUE)));
    }

}

Это должно точно решить вашу проблему: -).

2 голосов
/ 23 августа 2011

Вы можете реализовать свой собственный ParameterSupplier, как описано здесь: http://blog.schauderhaft.de/2010/02/07/junit-theories/

1 голос
/ 01 октября 2010

Тесты могут быть сгруппированы в «приборы», где прибор - это набор кода, который использует одну и ту же настройку. Поместите тесты для случаев, использующих одни и те же точки данных, в одном классе, чтобы у вас был один класс для каждого набора данных.

0 голосов
/ 10 апреля 2014

Вы смотрели на JUnitParams ? Если вы просто хотите передать параметры в методы, и это все, что показывает ваш пример, это гораздо более понятный вариант.

@RunWith(JUnitParamsRunner.class)
public class DummyTest {

    public static String[] getFileNames() {
        return new String[] { "firstFile.txt","firstFile1.txt" };
    }

    @Theory
    public void test1(String fileName) throws Exception {
        System.out.println(fileName);
        assertThat(true, is(equalTo(Boolean.TRUE)));
    }

    @DataPoints
    public static String[] getSecondFileNames() {
        return new String[] { "secondFile.txt","secondFile1.txt" };
    }

    @Theory
    public void test2(String fileName) throws Exception {
        System.out.println(fileName);
        assertThat(true, is(equalTo(Boolean.TRUE)));
    }

}
...