0

Ich habe eine parametrische Testklasse und ich habe eine Testmethode, von der erwartet wird, dass sie IllegalArgumentException zurückgibt.IllegalArgumentException in der parametrisierten Testklasse

@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); 

    } 

} 

aber ich habe diesen Fehler habe: Initialisierungsfehler: keinen Test gefunden Methode negetiveSideTest ..

hat jemand eine Lösung?

Antwort

0

Wenn Sie die @Test Anmerkung verwenden, um Ihre Testfunktion zu markieren, sollte es keine Klammer sein, etwa so:

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

Das Gleiche gilt für Ihre @Parameter declaraion.