사람들 JUnit을 처음 사용하고 그것에 대해 잘 이해하고 있습니다. 지금 당장은 JUnit 테스트를 생성 할 때 (직접 그래프를 생성하는 Digraph 클래스의 경우), 읽을 때 IllegalArgumentException을 던집니다. 음수 int 값이며 모든 것이 ok (노드 값의 수)가 0보다 큰 경우 그래프를 만듭니다.JUnit 테스팅 생성자 테스팅
소리를 나타내는 두 글자 클래스 : 나는 하나 (또는 2) 테스트 케이스를 사용하는 경우 모두를 테스트하는 방법
@Rule
public ExpectedException exception = ExpectedException.none();
@Test(expected = IllegalArgumentException.class)
public void DigraphIn() {
Digraph G = new Digraph(in.readInt());
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Vertices can't be nagative");
exception.expectMessage("Invalid input format in Digraph constructor");
exception.expectMessage("Number of edges in a Digraph must be nonnegative");
try{
}catch (AssertionError e){
}
}
을 : 아래
In in = new In();
public Digraph(In in) {
try {
this.nodes = in.readInt();
System.out.println("Total nodes in graph: "+ nodes);
if (nodes < 0) throw new IllegalArgumentException("Number of vertices must be > 0);
int E = in.readInt();
if (E < 0) throw new IllegalArgumentException("Number of edges must be >0);
}catch (NoSuchElementException e) {
throw new InputMismatchException("Invalid input format in Digraph constructor");
}
내가 쓰기를 시도하고있는 테스트입니다 ? "in"에 의해 -ve 값이 감지되지 않으면 java.lang.AssertionError를 얻습니다. 그렇지 않으면 테스트가 통과합니다. 미리 감사드립니다.
csoroiu을 :
시험에있어서 만 실행 당 하나 개의 예외를 발생시킬 수 있기 때문에, 예외가 발생 될 수있는 장소의 각각에 대해 하나 개의 시험 방법이 있어야 각 예외에 대해 별도의 테스트를해야합니까 ?? 왜냐하면 내가하지 않으면 AssertionError가 발생하기 때문입니다! – user1569891
@ user1569891 게시물을 업데이트 했으므로 각 예외에 대해 하나의 메소드가 필요합니다. In 클래스를 조롱하거나 각 테스트에 대해 'Digraph'생성자가 해당 테스트에 필요한대로 동작하는 데 필요한 값을 반환하는 클래스를 만들 수 있습니다. – Claudiu
'ExpectedException'을 사용하는 것이 더 낫습니다.이 테스트에서는 예외가 던져지는 곳을 확인할 수 없습니다 .. – Tobb