JUnit 테스트 케이스 @Before @BeforeClass 주석
JUnit 가장 인기있는 유닛입니다 지원 프레임 워크 Java. 명시적으로 권장되는 사항은 다음과 같습니다. 단위 테스트. JUnit 웹 애플리케이션 테스트를 위한 서버가 필요하지 않으므로 테스트 프로세스가 빠릅니다.
JUnit 또한 프레임워크를 사용하면 테스트 사례와 테스트 데이터를 빠르고 쉽게 생성할 수 있습니다. 그만큼 org.Junit 패키지는 다양한 인터페이스와 클래스로 구성됩니다. JUnit Test, Assert, After, Before 등의 테스트
테스트 픽스처란 무엇입니까?
테스트 픽스처가 무엇인지 이해하기 전에 아래 코드를 살펴보겠습니다.
이 코드는 간단한 파일에서 두 가지 테스트 사례를 실행하도록 설계되었습니다.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
여기에는 몇 가지 문제가 있습니다.
- 코드를 읽을 수 없습니다
- 코드는 유지 관리가 쉽지 않습니다.
- 테스트 모음이 복잡하면 코드에 논리적 문제가 포함될 수 있습니다.
다음을 사용하여 동일한 코드를 비교합니다. JUnit
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
코드는 훨씬 더 읽기 쉽고 유지 관리하기 쉽습니다. 위의 코드 구조는 다음과 같습니다. 테스트 설비.
테스트 픽스처는 다음과 같은 상황입니다. JUnit 테스트 케이스 달린다. 일반적으로 테스트 픽스처에는 다음이 포함됩니다.
- 모든 테스트 사례에 사용할 수 있는 개체 또는 리소스입니다.
- 이러한 객체/리소스를 사용 가능하게 만드는 데 필요한 활동입니다.
- 이러한 활동은
- 할당(설치)
- 할당 해제(해체).
설정 및 해제
- 일반적으로 각 테스트 사례 전에 수행해야 하는 몇 가지 반복 작업이 있습니다. 예: 데이터베이스 연결을 만듭니다.
- 마찬가지로, 각 테스트 사례가 끝날 때마다 반복되는 작업이 있을 수 있습니다. 예: 테스트 실행이 끝나면 정리합니다.
- JUnit 설정 및 해제에 도움이 되는 주석을 제공합니다. 리소스가 해제되고 테스트 시스템이 다음 테스트 사례를 위한 준비 상태에 있는지 확인합니다.
Bowman의 JUnit 주석은 아래에서 논의됩니다.
설정
@전에 주석 JUnit 다음을 포함하는 메서드에 사용됩니다. Java 각 테스트 케이스 전에 실행할 코드입니다. 즉, 각 테스트 실행 전에 실행됩니다.
분해(판결과 관계없음)
@후에 주석은 각 테스트 사례 후에 실행할 Java 코드가 포함된 메서드에 사용됩니다. 이러한 메서드는 테스트 사례에서 예외가 발생하거나 어설션이 실패하는 경우에도 실행됩니다.
참고 :
- 위에 나열된 주석은 원하는 수만큼 가질 수 있습니다.
- 주석이 달린 모든 메소드 @전에 in JUnit 각 테스트 케이스 전에 실행되지만 순서에 관계없이 실행될 수 있습니다.
- 슈퍼 클래스로부터 @Before, @After 메소드를 상속받을 수 있으며, 실행은 다음과 같습니다. JUnit.
- 실행 JUnit 슈퍼클래스의 @Before 메소드
- 이 클래스에서 @Before 메서드를 실행합니다.
- 이 클래스에서 @Test 메서드를 실행합니다.
- 이 클래스에서 @After 메서드를 실행합니다.
- 슈퍼클래스에서 @After 메소드 실행
예: 파일을 테스트 픽스처로 사용하여 클래스 생성
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
위의 예에서 실행 체인은 다음과 같습니다.
- 생성출력파일()
- 테스트파일1()
- 삭제출력파일()
- 생성출력파일()
- 테스트파일2()
- 삭제출력파일()
인수:
testFile1()은 testFile2()보다 먼저 실행됩니다. 이는 보장되지 않습니다.
한 번만 설정
- 테스트가 실행되기 전, 전체 테스트 클래스에 대해 한 번만 메서드를 실행할 수 있습니다. @전에 행동 양식).
- "한 번만 설정"은 서버 시작, 통신 열기 등에 유용합니다. 각 테스트에 대해 리소스를 닫고 다시 여는 데 시간이 많이 걸립니다.
- 이 작업은 주석을 사용하여 수행할 수 있습니다. 뿡 빵뀨 in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
단 한번의 해체
- 한 번만 설정과 유사하게 한 번만 정리하는 방법도 사용할 수 있습니다. 모든 테스트 케이스 메소드 이후에 실행되며 @후에 주석이 실행되었습니다.
- 서버 중지, 통신 링크 닫기 등에 유용합니다.
- 이것은 다음을 사용하여 수행 할 수 있습니다. @방과후 주석
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit 테스트 스위트
지정된 순서로 여러 테스트를 실행하려면 모든 테스트를 한곳에 결합하면 됩니다. 이 곳을 테스트 모음이라고 합니다. 테스트 모음을 실행하는 방법과 그것이 어떻게 사용되는지에 대한 자세한 내용은 다음과 같습니다. JUnit 이 내용에서 다루겠습니다 지도 시간.
Junit 테스트 러너
JUnit 테스트 케이스 실행을 위한 도구를 제공합니다.
- JUnit핵심 클래스는 이러한 테스트를 실행하는 데 사용됩니다.
- 라는 메소드 runClasses 에 의해 제공 org.junit.runner를 참조하세요.JUnit핵심, 하나 이상의 테스트 클래스를 실행하는 데 사용됩니다.
- 이 메소드의 반환 유형은 결과 객체 (org.junit.runner.결과), 테스트에 대한 정보에 액세스하는 데 사용됩니다. 더 명확하게 알아보려면 다음 코드 예제를 참조하세요.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
위의 코드에서 "결과" 개체는 우리가 실행 중인 테스트 사례의 실패 및 성공적인 결과를 얻기 위해 처리됩니다.
먼저, JUnit 프로그램
SDLC, Java 프로그래밍 및 기본 사항에 대한 상당한 지식 소프트웨어 테스팅 과정을 이해하는 데 도움이 됩니다. JUnit 프로그램)
실제 예제를 사용하여 단위 테스트를 이해해 보겠습니다. 다음과 같이 주석이 달린 테스트 메서드를 사용하여 테스트 클래스를 만들어야 합니다. @테스트 아래와 같이 :
MyFirstClassTest.java
package guru99.JUnit; import static org.JUnit.Assert.*; import org.JUnit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
위의 테스트 메서드를 실행하려면 테스트 실행기를 만들어야 합니다. 테스트 실행기에서 테스트 클래스를 매개변수로 추가해야 합니다. JUnitCore의 runclasses() 메소드 . 테스트의 통과 또는 실패 여부에 따라 테스트 결과를 반환합니다.
자세한 내용은 아래 코드를 참조하세요.
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(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
산출
일단 TestRunner.java 테스트 메서드를 실행하면 실패 또는 통과로 출력됩니다. 아래 출력 설명을 찾으십시오.
- 이 예에서는 실행 후 MyFirstClassTest.java , 테스트가 통과되었으며 결과는 녹색으로 표시됩니다.
- 실패했다면 결과가 빨간색으로 표시되어야 하며 실패 추적에서 실패를 관찰할 수 있습니다. 아래를 참조하세요 JUnit GUI :
제품 개요
- JUnit 테스트가 포함된 메소드를 식별하기 위해 여러 주석을 지원하는 프레임워크입니다.
- JUnit 라는 주석을 제공합니다. @시험, 이는 JUnit 그것이 사용되는 public void 메소드는 테스트 케이스로 실행될 수 있습니다.
- 테스트 픽스쳐는 테스트 케이스가 실행되는 컨텍스트입니다.
- 지정된 순서에 따라 여러 테스트를 실행하려면 모든 테스트를 한 곳에 결합하면 됩니다. 이곳을 테스트 스위트라고 합니다.
- JUnit Test Runner라고 하는 테스트 사례를 실행할 수 있는 테스트 실행 도구를 제공합니다.