JUnit 예제가 포함된 주석 튜토리얼: @Test 및 @After란 무엇입니까?
JUnit 주석?
JUnit 주석 에 추가할 수 있는 특별한 형태의 구문 메타데이터입니다. Java 더 나은 코드 가독성과 구조를 위해 소스 코드를 사용합니다. 변수, 매개변수, 패키지, 메서드 및 클래스에 주석을 달 수 있습니다. 주석은 Junit4에서 도입되었으며, Java 코드가 더 읽기 쉽고 간단해졌습니다. 이것이 Junit3와 Junit4의 큰 차이점인데, Junit4는 주석 기반입니다.
Junit5의 주석에 대한 지식을 통해 사용자는 쉽게 다음을 학습하고 구현할 수 있습니다. JUnit 시험. 다음은 중요하고 자주 사용되는 내용입니다. JUnit 주석 목록:
S.No. | 주석 | 기술설명 |
---|---|---|
1. | @테스트 | 이 주석은 org.junit.TestCase를 대체하는 것으로, 이 주석이 첨부된 public void 메서드가 테스트 케이스로 실행될 수 있음을 나타냅니다. |
2. | @전에 | 이 주석은 각 테스트 사례 전에 전제 조건과 같은 일부 명령문을 실행하려는 경우에 사용됩니다. |
3. | 뿡 빵뀨 | 이 주석은 모든 테스트 케이스 전에 일부 명령문을 실행하려는 경우(예: 테스트 연결에 대한 테스트 케이스가 모든 테스트 케이스 전에 실행되어야 함) 사용됩니다. |
4. | @후에 | 이 주석은 각 명령문 이후에 일부 명령문을 실행하려는 경우 사용할 수 있습니다. 테스트 케이스 예를 들어 변수 재설정, 임시 파일 삭제, 변수 등 |
5. | @방과후 | 이 주석은 모든 테스트 사례 실행 후 리소스 해제와 같이 모든 테스트 사례 후에 일부 명령문을 실행하려는 경우 사용할 수 있습니다. |
6. | @무시 | 테스트 실행 중에 일부 테스트 사례를 비활성화하는 등 테스트 실행 중에 일부 명령문을 무시하려는 경우 이 주석을 사용할 수 있습니다. |
7. | @Test(타임아웃=500) | 예를 들어 일부 SLA(서비스 수준 계약)에 따라 작업 중이고 지정된 시간 내에 테스트를 완료해야 하는 경우와 같이 테스트 실행 중에 일부 시간 초과를 설정하려는 경우 이 주석을 사용할 수 있습니다. |
8. | @Test(예상=IllegalArgumentException.class) | 이 주석은 테스트 실행 중에 일부 예외를 처리하려는 경우 사용할 수 있습니다. 예를 들어, 특정 메서드가 지정된 예외를 throw하는지 여부를 확인하려는 경우입니다. |
JUnit 주석 예
중요한 내용을 다루는 클래스를 만들어 보겠습니다. JUnit 간단한 인쇄 문으로 주석을 추가하고 테스트 실행기 클래스로 실행합니다.
단계 1) 위에 나열된 주석에 첨부된 다양한 메소드를 갖는 아래 Java 클래스를 고려하십시오.
JunitAnnotationsExample.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
단계 2) 위의 테스트를 실행할 테스트 실행기 클래스를 만들어 보겠습니다.
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(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
예상 결과
- 모든 테스트 케이스는 하나씩 실행되며 모든 print 문은 콘솔에서 볼 수 있습니다.
- 위의 표에서 설명한 대로 @Before 주석은 JUnit, @BeforeClass [ method m1() 및 m2() ]는 각 테스트 사례 이전과 모든 테스트 사례 이전에 각각 실행됩니다.
- 같은 방식으로 @After in JUnit, @afterClass(메서드 m3() 및 m4())는 각각의 테스트 사례와 모든 테스트 사례 이후에 각각 실행됩니다. @ignore(메서드 m6())는 테스트를 무시하는 것으로 처리됩니다.
위의 Java 클래스에서 사용된 테스트 사례를 자세히 분석해 보겠습니다.
- 아래와 같이 m5() 메소드를 고려하십시오.
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
위의 방법에서는 변수 "list"에 문자열을 추가하므로
- 목록.isEmpty() 거짓을 반환합니다.
- 주장False(list.isEmpty()) true를 반환해야 합니다.
- 결과적으로 테스트 케이스는 패스.
목록에 하나의 문자열만 추가했으므로 크기는 XNUMX입니다.
- 목록.크기() int 값을 “1”로 반환해야 합니다.
- So 주장Equals(1, list.size()) true를 반환해야 합니다.
- 결과적으로 테스트 케이스는 패스.
- 아래와 같이 m7() 메소드를 고려하십시오.
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
위에서 논의한 바와 같이 @Test(시간 초과 = 10)주석은 테스트 케이스에서 시간 제한을 적용하는 데 사용됩니다.
- 아래와 같이 m8() 메소드를 고려하십시오.
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
위에서 논의한 바와 같이 @테스트(예상) 실행 중에 지정된 예외를 확인하므로 m8() 메서드는 "No Such Method Exception"을 발생시킵니다. 결과적으로 테스트는 예외적으로 실행됩니다.
모든 테스트 케이스가 통과되면 성공적인 테스트 실행이 이루어집니다.
실제 결과
위의 예에는 세 가지 테스트 케이스가 있으므로 모든 테스트 케이스는 하나씩 실행됩니다. 아래 출력을 참조하세요.
콘솔에서 볼 수 있는 아래 인쇄 문을 참조하세요.
@BeforeClass를 사용하여 모든 테스트 케이스 이전에 실행됨
@Before 주석을 사용하여 각 테스트 사례 전에 실행됩니다.
@After를 사용하여 각 테스트 사례 후에 실행됩니다.
@Before 주석을 사용하여 각 테스트 사례 전에 실행됩니다.
@Test(timeout)를 사용하면 시간 초과를 적용하는 데 사용할 수 있습니다. JUnit4개의 테스트 케이스
@After를 사용하여 각 테스트 사례 후에 실행됩니다.
@Before 주석을 사용하여 각 테스트 사례 전에 실행됩니다.
@Test(expected)를 사용하여 실행 중에 지정된 예외를 확인합니다.
@After를 사용하여 각 테스트 사례 후에 실행됩니다.
@AfterClass를 사용하여 모든 테스트 케이스 후에 실행됨
JUnit 어설션 클래스
이 클래스는 테스트 사례를 작성하는 데 유용한 여러 가지 어설션 메서드를 제공합니다. 모든 Assert 문이 통과되면 테스트 결과가 성공한 것입니다. Assert 문이 실패하면 테스트 결과가 실패합니다.
앞서 본 것처럼 아래 표에는 중요한 Assert 메서드와 설명이 설명되어 있습니다.
S.No. | 방법 | 기술설명 |
---|---|---|
1. | void AssertEquals(예상 부울, 실제 부울) | Object 클래스의 equals 메소드와 유사하게 두 값이 같은지 확인합니다. |
2. | void AssertFalse(부울 조건) | 기능은 조건이 거짓인지 확인하는 것입니다. |
3. | void AssertNotNull(객체 객체) | "assertNotNull" 기능은 개체가 null이 아닌지 확인하는 것입니다. |
4. | void AssertNull(객체 객체) | "assertNull" 기능은 개체가 null인지 확인하는 것입니다. |
5. | void AssertTrue(부울 조건) | "assertTrue" 기능은 조건이 참인지 확인하는 것입니다. |
6. | 무효 실패() | 어설션 오류를 발생시키려는 경우 항상 실패 판정을 내리는 실패()가 있습니다. |
7. | voidassertSame([문자열 메시지] | "assertSame" 기능은 두 개체가 동일한 개체를 참조하는지 확인하는 것입니다. |
8. | void AssertNotSame([문자열 메시지] | "assertNotSame" 기능은 두 개체가 동일한 개체를 참조하지 않는지 확인하는 것입니다. |
JUnit 테스트 케이스 클래스
여러 테스트를 실행하려면 TestCase 클래스를 사용할 수 있습니다. org.junit.테스트케이스 패키지. @Test 주석이 알려줍니다. JUnit 연결된 이 public void 메소드(여기서는 테스트 케이스)가 테스트 케이스로 실행될 수 있습니다.
아래 표는 다음에서 사용할 수 있는 몇 가지 중요한 방법을 보여줍니다. org.junit.테스트케이스 수업:
S.No. | 방법 | 기술설명 |
---|---|---|
1. | 정수 countTestCases() | 이 방법은 실행된 테스트 케이스의 수를 계산하는 데 사용됩니다. 실행(테스트결과 tr) 방법. |
2. | 테스트결과 createResult() | 이 방법은 검사 결과 목적. |
3. | 문자열 getName () | 이 메소드는 문자열에 불과한 문자열을 반환합니다. 테스트 케이스. |
4. | 테스트결과 실행() | 이 메소드는 다음을 반환하는 테스트를 실행하는 데 사용됩니다. 검사 결과 대상 |
5. | 무효 실행(TestResult 결과) | 이 방법은 다음과 같은 테스트를 실행하는 데 사용됩니다. 검사 결과 아무것도 반환하지 않는 개체입니다. |
6. | void setName (문자열 이름) | 이 방법은 이름을 설정하는 데 사용됩니다. 테스트케이스. |
7. | 무효 설정() | 이 메소드는 자원 연관 코드를 작성하는 데 사용됩니다. 예를 들어 데이터베이스 연결을 생성합니다. |
8. | 무효 티어다운() | 이 방법은 리소스 해제 코드를 작성하는 데 사용됩니다. 예를 들어, 트랜잭션 작업을 수행한 후 데이터베이스 연결을 해제합니다. |
JUnit 테스트결과 클래스
테스트를 실행하면 결과가 반환됩니다(다음 형식으로). 검사 결과 물체). 이 TestResult 개체를 사용하여 결과 개체를 분석할 수 있습니다. 이 테스트 결과는 실패할 수도 있고 성공할 수도 있습니다.
org.junit.TestResult 클래스에서 사용되는 중요한 메서드는 아래 표를 참조하세요.
S.No. | 방법 | 기술설명 |
---|---|---|
1. | void addError(테스트 테스트, Throwable t) | 이 방법은 테스트에 오류를 추가해야 하는 경우에 사용됩니다. |
2. | void addFailure(테스트 테스트, AssertionFailedError t) | 이 방법은 실패 목록에 실패를 추가해야 하는 경우에 사용됩니다. |
3. | void endTest(테스트 테스트) | 테스트가 수행(완료)되었음을 알리는 데 사용되는 메서드입니다. |
4. | 정수 오류카운트() | 이 메소드는 테스트 실행 중에 감지된 오류를 가져오는 데 사용됩니다. |
5. | 열거 오류() | 이 메서드는 단순히 오류 모음(여기서는 열거)을 반환합니다. |
6. | 정수 실패카운트() | 이 메서드는 테스트 실행 중에 감지된 오류 수를 가져오는 데 사용됩니다. |
7. | 무효 실행(TestCase 테스트) | 이 메소드는 테스트 케이스를 실행하는 데 사용됩니다. |
8. | 정수 runCount() | 이 방법은 단순히 실행된 테스트 횟수를 계산합니다. |
9. | void startTest(테스트 테스트) | 이 메소드는 테스트가 시작되었음을 알리는 데 사용됩니다. |
10. | 무효 정지() | 이 방법은 테스트 실행을 중지하는 데 사용됩니다. |
JUnit 테스트 스위트 클래스
여러 테스트를 지정된 순서로 실행하려는 경우 모든 테스트를 한곳에 결합하여 수행할 수 있습니다. 이곳을 테스트 스위트라고 합니다.
사용되는 중요한 방법은 아래 표를 참조하세요. org.junit.테스트 스위트 수업:
S.No. | 방법 | 기술설명 |
---|---|---|
1. | void addTest(테스트 테스트) | 이 방법은 제품군에 테스트를 추가하려는 경우에 사용됩니다. |
2. | void addTestSuite(클래스 테스트 클래스) | 이 방법은 스위트에 테스트를 추가하면서 클래스를 지정하려는 경우에 사용됩니다. |
3. | 정수 countTestCases() | 이 방법은 테스트 케이스의 개수를 세고 싶을 때 사용됩니다. |
4. | 문자열 getName () | 이 메소드는 테스트 스위트의 이름을 얻는 데 사용됩니다. |
5. | 무효 실행(TestResult 결과) | 이 메소드는 테스트를 실행하고 테스트 결과를 수집하는 데 사용됩니다. 검사 결과 목적. |
6. | void setName (문자열 이름) | 이 방법은 이름을 설정하는 데 사용됩니다. 테스트스위트. |
7. | 테스트 testAt(int 인덱스) | 이 방법은 주어진 인덱스에서 테스트를 반환하려는 경우에 사용됩니다. |
8. | 정수 테스트카운트() | 이 방법은 Suite에서 여러 테스트를 반환하려는 경우에 사용됩니다. |
9. | 정적 테스트 경고(문자열 메시지) | 이 메소드는 실패하고 경고 메시지를 기록하는 테스트를 반환합니다. |
제품 개요
- JUnit 모든 중요한 클래스와 Selenium 단위 테스트를 작성하는 데 유용한 주석입니다.
- 테스트 케이스를 작성할 때 매우 유용한 클래스
- org.junit.Assert
- org.junit.테스트케이스
- org.junit.테스트 결과
- org.junit.테스트 스위트
- 중요하고 자주 사용되는 JUnit 주석 목록@Before@BeforeClass@After
@방과후
@테스트
@무시하다