2013-12-10 2 views
3

У меня есть следующий класс A с конструктором, который принимает две строки в качестве параметров.JUnit тестирование с несколькими тестовыми примерами по методу

Class A 
{ 
String test1; 
String test2; 

    public(String test1, String test2) 
    { 
    this.test1 = test1; 
    this.test2 = test2; 
    } 
} 

Я хотел бы проверить конструктор с трех тестовых случаев в рамках метода анализа конкретных ситуаций в один тест т.е. 1. Null test1 2. Null test2 3. Null test1, test2 Null

String test1 = "ABC"; 
String test2 = "XYZ"; 
@Test(expected=NullPointerException.class) 
public void testNullConstructorValues() { 
     new A(null, test2); 
     new A(test1, null); 
     new A(null, null); 
} 

Проблема здесь в том, что после первого объявления конструктора метод выдает NPE и возвращается из метода. Я хотел бы, чтобы метод выполнял все 3 объявления конструктора только в одном методе и выполнял ожидаемую проверку исключений.

Есть ли способ сделать это из всех 3 тестовых случаев в рамках одного метода?

+0

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

+0

Нет, это просто любопытство. Его просто макет, у меня есть куча тестового метода в моем классе, и мне было интересно, могу ли я сгруппировать несколько тестовых примеров любым способом, чтобы быть более читабельными? –

+2

Я действительно рекомендую вам этого не делать. Держите каждый тестовый сценарий в своем собственном методе, так что если тест завершится с ошибкой, вы сразу увидите из выхода JUnit, какой он есть. –

ответ

10

Используйте тест Parameterized runner.

@RunWith(Parameterized.class) 
public class ATest { 
    private String value1; 
    private String value2; 

    private static final String ABC = "abc"; 
    private static final String XYZ = "xyz"; 

    public ATest(String value1, String value2) { 
     this.value1 = value1; 
     this.value2 = value2; 
    } 

    @Test(expected=NullPointerException.class) 
    public void nullPassedToConstructor() { 
     A a = new A(value1, value2); 
    } 

    // Provide data 
    @Parameters 
    public static List<Object[]> data() { 
    List<Object[]> list = new ArrayList<Object[]>(); 

     list.add(new Object[] {null, XYZ}); 
     list.add(new Object[] {ABC, null}); 
     list.add(new Object[] {null, null}); 

     return list; 
    } 
} 
Смежные вопросы