IllegalArgumentException в параметризованном тестовом классе

У меня есть параметрический тестовый класс, и у меня есть тестовый метод, который я должен вернуть IllegalArgumentException.

@RunWith(value = Parameterized.class)
public class TriangleParametrizedTest {

    @Rule
    public ExpectedException exception = ExpectedException.none();

    enum Type {
        EQUILATERAL,
        NEGETIVE
    };

    private Type type;

    private int sideA;
    private int sideB;
    private int sideC;

    public TriangleParametrizedTest(Type type, int sideA, int sideB, int sideC) {
        this.type = type;
        this.sideA = sideA;
        this.sideB = sideB;
        this.sideC = sideC;
    }

    @Parameters()
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
            {Type.EQUILATERAL, 5, 5, 5},
            {Type.NEGETIVE, -5, 5, 5},});
    }

    @Test()
    public void negetiveSideTest() {
        Assume.assumeTrue(type == Type.NEGETIVE);
        exception.expect(IllegalArgumentException.class);
        Triangle trianle = new Triangle(sideA, sideB, sideC);

    }

}

но я получил эту ошибку: Ошибка инициализации: не найдено ни одного теста, соответствующего методу negetiveSideTest ..

кто-нибудь есть решение?

1 ответ

Когда вы используете аннотацию @Test для пометки вашей тестовой функции, не должно быть круглых скобок, например:

@Test   <--- Remove the parenthesis here
public void negetiveSideTest() {
    Assume.assumeTrue(type == Type.NEGETIVE);
    exception.expect(IllegalArgumentException.class);
    Triangle trianle = new Triangle(sideA, sideB, sideC);
}

То же самое касается вашего объявления @Parameters.

Другие вопросы по тегам