JUnit ErrorCollector @Rule(예제 포함)
일반적인 시나리오에서는 테스트 실행 중에 오류를 식별할 때마다 테스트를 중지하고 오류를 수정한 후 테스트를 다시 실행합니다.
그러나 JUnit 약간 다른 접근 방식을 가지고 있습니다. 와 함께 JUnit 오류 수집기를 사용하면 문제가 발견되거나 테스트가 실패한 후에도 테스트 실행을 계속할 수 있습니다. 오류 수집기는 모든 오류 개체를 수집하고 테스트 실행이 끝난 후 한 번만 보고합니다.
오류 수집기를 사용하는 이유는 무엇입니까?
테스트 스크립트를 작성하는 동안 네트워크 오류, 어설션 오류 또는 기타 이유로 인해 코드 줄이 실패하더라도 모든 테스트를 실행하려고 합니다. 이러한 상황에서도 다음에서 제공하는 특수 기능을 사용하여 테스트 스크립트를 계속 실행할 수 있습니다. JUnit "오류 수집기"로 알려져 있습니다.
이를 위해, JUnit 사용 @Rule 주석 이는 오류 수집기 개체를 만드는 데 사용됩니다. 오류 수집기용 개체가 생성되면 메서드를 사용하여 모든 오류를 개체에 쉽게 추가할 수 있습니다. addError(발생 가능한 오류). 아시다시피 그 던질 수있는 슈퍼클래스다 예외 and 오류 수업 Java. 이런 방식으로 오류를 추가하면 이러한 오류가 기록됩니다. JUnit 검사 결과 .
오류 수집기에 모든 오류를 추가하면 모든 오류를 한 번에 확인할 수 있다는 이점이 있습니다. 또한 스크립트가 중간에 실패하더라도 계속 실행할 수 있습니다.
주의 사항: 단순 Assert 또는 try/catch 블록을 사용하는 경우 오류 수집기 방법을 사용할 수 없습니다.
샘플 코드
오류 수집기에 대해 더 자세히 이해하려면 오류 수집기 개체를 만들고 해당 개체에 모든 오류를 추가하여 문제를 추적하는 방법을 보여주는 아래 코드 예제를 참조하세요.
package guru99.junit; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); collector.checkThat(getResults(), not(containsString("here is an error"))); // all lines of code will execute and at the end a combined failure will be logged in. } }
jUnit에서 @Rule은 무엇인가요?
JUnit 특별한 종류의 테스트 처리를 제공합니다. 테스트 케이스 또는 다음을 사용하여 테스트 스위트 @rule 주석. @rule을 사용하면 테스트 동작을 쉽게 추가하거나 재정의할 수 있습니다.
에서 제공하는 몇 가지 기본 제공 규칙이 있습니다. JUnit 테스터가 사용할 수 있는 API 또는 자체 규칙을 작성할 수도 있습니다.
오류 수집기와 함께 @rule 주석을 사용하는 방법을 보여주는 아래 코드 줄을 참조하세요.
@Rule public ErrorCollector collector= new ErrorCollector();
ErrorCollector를 사용한 예
오류 수집기를 이해하기 위해 모든 오류를 수집하는 클래스와 규칙을 만들어 보겠습니다. 여기에 addError(throwable)를 사용하여 모든 오류를 추가합니다.
단순히 "Error Collector 개체"를 생성하는 것에 불과한 규칙을 생성하는 아래 코드를 참조하세요. 마지막에 문제를 보고하기 위해 모든 오류를 추가하는 데 추가로 사용됩니다.
ErrorCollectorExample.java
package guru99.junit; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); System.out.println("Hello"); try { Assert.assertTrue("A " == "B"); } catch (Throwable t) { collector.addError(t); } System.out.println("World!!!!"); } }
TestRunner.java
위의 테스트 클래스를 테스트 러너에 추가하고 실행하여 모든 오류를 수집해 보겠습니다. 아래 코드를 참조하세요.
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(ErrorCollectorExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
출력:
모든 오류를 한 곳에서 추적하는 실패 추적을 확인하세요.
Benefits of JUnit 오류 수집기
당신이 사용할 수 JUnit 기능 또는 GUI 검증을 위한 어설션(예:
- 두 객체가 동일한지 비교하는 AssertEquals(String message, Object Expect, Object Actual)입니다.
- 마찬가지로, AssertTrue(Boolean Condition)은 조건이 참이라고 주장합니다.
어설션을 사용하면 유효성 검사 테스트가 쉬워집니다. 그러나 한 가지 주요 문제는 단일 어설션이 실패하더라도 테스트 실행이 중지된다는 것입니다.
테스트 연속성과 복구 처리는 테스트 자동화 성공에 매우 중요합니다. 오류 수집기는 이러한 종류의 시나리오를 처리하는 가장 좋은 방법입니다.
요약
- Junit 오류 수집기를 사용하면 첫 번째 문제가 발견되고 테스트가 마지막에 실패한 후에도 테스트를 계속할 수 있습니다.
- 오류 수집기는 모든 오류 개체를 수집하고 이를 보고만 하며, 결국 테스트 실행이 완료됩니다.
- 오류 수집기에 모든 오류를 추가하면 모든 오류를 한 번에 확인할 수 있다는 이점이 있습니다.
- 오류 수집기는 단순히 ErrorCollector.java에서 제공하는 addError(throwable err) 메소드를 사용하여 오류를 추가합니다.