what is junit test fixture
이 튜토리얼에서는 개념을 쉽게 이해할 수 있도록 간단한 JUnit 테스트 픽스처 예제와 함께 JUnit 테스트 픽스처를 사용하는시기, 이유 및 방법을 설명합니다.
우리는 배울 것입니다 –
- Test Fixture를 사용해야하는시기와 이유는 무엇입니까?
- JUnit 테스트 용 코드에서 사용하는 방법은 무엇입니까?
- @Before, @After, @BeforeClass, @AfterClass 및 @Test와 같은 JUnit 4 라이프 사이클 주석에 대해 병렬로 계단식으로 연결된 '테스트 픽스처'라는 용어를 이해하기위한 몇 가지 예입니다.
학습 내용 :
JUnit 테스트 픽스처
JUnit 클래스에 여러 테스트 케이스가있는 경우 모든 테스트 케이스에서 사용하는 공통 오브젝트가있을 수 있습니다. 이 경우 모든 테스트 사례에서 공통적 인 특정 기능이있을 수 있습니다.
그렇다고 모든 테스트 사례에서 테스트 개체를 공유해야한다는 의미는 아닙니다. 이러한 테스트는 독립적이며 우선 순위 설정에 따라 다른 순서로 실행될 수 있으므로 한 테스트에서 수행 된 개체의 변경 사항을 모든 테스트에서 공유 할 필요가 없습니다.
테스트 인터뷰 질문의 소프트웨어 개발자
전체 론적 이해 용어 '테스트 픽스처' 코드의 고정 상태 또는 코드의 고정 단계 집합으로, 전제 조건으로 사용되며 모든 테스트에 대한 후 조건으로 사용되는 몇 가지 다른 단계 집합입니다.
즉, 모든 테스트에 대해 반복되는 명령문 세트를 식별하여 테스트 메서드를 실행할 고정 환경을 설정하는 것입니다.
그만큼 목적 테스트 픽스처를 사용하는 것은 모든 테스트 케이스에 대한 공통 코드의 중복을 제거하는 것입니다.
지속적 통합 및 지속적 전달 도구
JUnit 테스트에서 테스트 픽스처의 실제 구현을 이해해 보겠습니다.
setUp () 메서드
- 특정 개체 (문자열, 정수 또는 ArrayList 또는 해당 문제에 대한 모든 개체)의 초기화가 필요한 테스트가 있습니다. 방법을 만들 수 있습니다. public void setUp () 공통 객체에 대한 인스턴스 변수를 선언 할 수 있습니다. 이 setUp () 메서드를 주석 아래에 놓습니다. @전에 . @Before 주석을 사용하면 프레임 워크는 모든 테스트 사례 실행 전에 setUp () 메서드를 실행합니다.
- setUp () 메서드는 미리 정의 된 자격 증명을 사용하여 애플리케이션에 로그인 한 후 테스트 케이스를 실행하는 첫 번째 단계로 특정 URL로 브라우저를 시작하려는 경우에도 사용할 수 있습니다.
tearDown () 메서드
- 테스트에서 외부 리소스를 할당 한 경우 리소스도 해제해야합니다. 테스트 케이스 실행이 완료된 후 객체 정리를 위해 teardown () 메서드를 추가 할 수 있습니다. setUp () 메서드와 비슷한 방식으로 메서드를 추가합니다. 공개 무효 분해 () 아래에 @후 주석. JUnit 프레임 워크는 각 테스트 케이스가 실행 된 후 @After의 메소드가 확실하게 실행되도록합니다. 테스트에 사용 된 객체는 teardown () 메서드에서 NULL로 설정해야 테스트의 가비지가 수집됩니다.
- 개체 정리를위한 또 다른 좋은 후보는 테스트 케이스가 완료된 후 작동중인 브라우저를 종료하고 사용 된 개체를 삭제하여 메모리를 해제하는 것입니다.
- 메소드 이름 setUp () 및 tearDown ()은 사용자 정의 이름입니다. 원하는 메소드 이름을 설정할 수 있습니다. 테스트 실행 순서를 결정하는 방법에 사용되는 주석 일뿐입니다.
JUnit 테스트 픽스처 예
이 섹션에서는 JUnit 4 테스트의 두 가지 예를 살펴보고 코드에서 테스트 픽스처의 접근 방식을 @Before, @After, @BeforeClass, @AfterClass, 및 @Test.
물론, 주석에 대한 별도의 자습서가있어 이들이 무엇이고 각 주석이 어떻게 작동하는지 명확히 할 것입니다. 지금은 코드에서 테스트 픽스처 사용법을 이해하도록하겠습니다.
JUnit 4 테스트 – 예 1
이 예에서는 3 개의 테스트 케이스가있는 클래스의 테스트 픽스처를 갖게됩니다. @Before 주석이있는 setUp () 메서드 및 @After 주석이있는 tearDown () 메서드.
암호:
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class JUnitProgram { @Before public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('This is the setUp() method that runs before each testcase'); } @Test public void test_JUnit1() { System.out.println('This is the testcase test_JUnit1() in this class'); } @Test public void test_JUnit2() { System.out.println('This is the testcase test_JUnit2() in this class'); } @Test public void test_JUnit3() { System.out.println('This is the testcase test_JUnit3() in this class'); } @After public void tearDown() { System.out.println('This is the tearDown() method that runs after each testcase'); System.out.println('_______________________________________________________
'); } }
결과 콘솔 창은 다음과 같습니다.
콘솔 창은 모든 테스트 실행 전에 setUp () 메서드가 실행되고 각 테스트가 완료된 후 tearDown () 메서드가 실행된다는 것을 분명하게 보여줍니다.
따라서 모든 테스트 메서드에 대한 주석 당 실행 순서는 다음과 같습니다.
- @전에
- @테스트
- @후
여기서 테스트는 순차적으로 실행되었습니다. 즉 test_JUnit1 (), test_JUnit2 (), test_JUnit3 (), 테스트에 정의 된 시퀀스가 없으므로 임의의 순서로 실행할 수 있습니다. 각 테스트는 다른 테스트와 격리됩니다.
JUnit 4 테스트 – 예제 2
여기서는 클래스에서 처음으로 한 번 실행되는 메서드와 클래스에 대해 모든 테스트가 실행 된 후 한 번 실행되는 다른 메서드를 갖는 방법을 빠르게 살펴 보겠습니다.
암호:
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println('This is the preClass() method that runs one time before the class'); } @Before public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('This is the setUp() method that runs before each testcase'); } @Test public void test_JUnit1() { System.out.println('This is the testcase test_JUnit1() in this class'); } @Test public void test_JUnit2() { System.out.println('This is the testcase test_JUnit2() in this class'); } @Test public void test_JUnit3() { System.out.println('This is the testcase test_JUnit3() in this class'); } @After public void tearDown() { System.out.println('This is the tearDown() method that runs after each testcase'); System.out.println('_______________________________________________________
'); } @AfterClass public static void postClass() { System.out.println('This is the postClass() method that runs one time after the class'); } }
@BeforeClass 주석 아래에 preClass () 메서드를 추가했습니다. 이 메서드는 테스트가 실행되기 전에 클래스에 대해 한 번만 실행됩니다. @Before의 메서드가 실행되기 전에도 실행됩니다.
@AfterClass 주석 아래의 postClass () 메서드는 @After 아래의 테스트를 포함한 모든 테스트가 실행되고 완료되면 마지막에 한 번 실행됩니다.
테스트 실행 순서는 다음과 같습니다.
- 뿡 빵뀨
- @전에
- @테스트
- @후
- @방과후
@BeforeClass 및 @AfterClass 아래의 메서드는 일반적으로 클래스가 공유하므로 메서드가 다음과 같이 선언되지 않은 경우 공전 그런 다음 초기화 오류 테스트 실행시.
나머지 웹 서비스를 테스트하는 도구
@BeforeClass 주석 아래에 preClass () 메서드를 다음과 같이 설정하지 않은 아래 스크린 샷을 참조하십시오. 공전 따라서 테스트 실행시 오류가 발생했습니다.
메서드를 정적으로 표시 할 때 제거 할 수있는 초기화 오류를 보여주는 결과를 볼 수 있습니다. @AfterClass 주석 아래의 postClass () 메서드도 마찬가지입니다.
결론
우리는 좋은 프로그래밍 관행에 대한 컨텍스트를 설정하고 테스트 픽스처 수명주기 주석의 사용법 및 실행 순서에 대한 기본적인 이해와 접근 방식.
다음 튜토리얼에서는 JUnit 테스트를 실행하는 다양한 방법 Eclipse에서. 따라서 JUnit의 더 흥미로운 측면으로 진행하면서 시리즈를 계속 지켜봐주십시오.
=> 여기에서 JUnit 교육 자습서의 A-Z를 보려면 여기를 확인하십시오.