JUnit4 상세 설명

표준 Junit4 프로세스와 이를 실현하려면 먼저 표준 Junit4의 실행 프로세스를 살펴보자. 대체적으로 다음과 같다. 테스트 클래스 실례화->실행 @BeforeClass->실행 @Before->실행 @Test->실행 @After->실행 @AfterClass. 아래의 코드 출력은 실행 프로세스를 명확하게 표시하고 초학자는 실행 결과 출력을 볼 수 있다import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class Junit4Sample {
@BeforeClass
public static void beforeClass(){
System.out.println("BeforeClass,to be run once before any of the test methods in the class");
}

@Before
public void before(){
System.out.println("Before,to be run before the {@link org.junit.Test} method");
}

@Test
public void testA(){
System.out.println("Test,can be run as a test case");
}

@Test
public void testB(){
System.out.println("Test,can be run as a test case");
}

@After
public void after(){
System.out.println("After,to be run after the {@link org.junit.Test} method");
}

@AfterClass
public static void afterClass(){
System.out.println("AfterClass,to be run after all the tests in the class have been run");
}
}


? Junit4.5+ Annotation ? :

위의 그림은 다른 부차적인 방법을 생략했다. 어쨌든 런 방법은 입구이고 한 바퀴 돌면 with 헤드 처리 프로세스의 @Before, @After 등 Annotation을 호출한다.
주의해야 할 것은 모든 이런 방법에는 Statement 매개 변수가 있고 이전 프로세스의 Statement를 봉인한다. 그 귀환자도 Statement가 다음 프로세스 노드에 호출을 제공한다. 예를 들어 파이프처럼 Statement는 파이프에서 흐르고 흐르며 파이프 안에서 일부 점은 흐르는 Statement를 특정한 처리를 한다.
일반적으로 Junit에서 제공하는 Annotation은 이미 수요를 충족시켰다. 이러한 주석은 공용 코드에 대한 추상적인 것이다. 예를 들어 모든 테스트 용례 방법이 실행되기 전에 코드를 실행하려면 그들을 단독 방법으로 추출하고 @Before 주석을 사용하면 된다.그러나 일부 문제가 보편적으로 통용될 때 게으른 사람들은 프로그램에 이러한 Before 방법을 쓰고 싶지 않다. 예를 들어 프로필의 불러오기, 테스트 전치 데이터 불러오기 등이다.
그래서 더 많은 사용자 정의 Annotation이 생겼다. 어떻게 이런 사용자 정의 Annotation 기능을 Junit의 표준 프로세스에 삽입합니까?
 
 
=============================================================================
JUnit는 우리가 프로젝트 테스트에서 자주 사용하는 단원 테스트 프레임워크, 많은 프로그래머들의 이상적인 세트입니다. 이 글은 주로 JUnit4의 흔한 annotation을 소개합니다.1. 치수 초기화
Junit4에서 setUp () 과 TearDown () 을 제공하여 모든 테스트 함수가 호출되기 전/후에 호출됩니다.
@Before: Method annotated with @Before executes before every test.@After:   Method annotated with @After executes after every test.
 
만약 테스트를 하기 전에 우리가 단지 한 번만 하고 싶은 일이 있다면, 함수마다 한 번씩 할 필요가 없다.예를 들어 아주 큰 서류를 읽는다.그럼 다음 두 개로 표시해 주세요.
@BeforeClass@AfterClass
참고:
@Before/@After 여러 개 가능; @BeforeClass/@AfterClass는 하나
Exception이 예상되는 경우 @Test에 매개변수를 추가합니다.
@Test(expected = XXXException.class)
 
만약 사순환이 나타나면 어떻게 합니까?이 때 timeout 매개 변수가 유용합니다.
@Test(timeout = 1000)
 
만약 우리가 잠시 용례를 테스트할 필요가 없다면, 우리는 삭제하거나 주석을 달 필요가 없다.다음과 같이 변경하면
@Ignore
이유도 설명 할 수 있어 @Ignore ("something happens")
 
2. 작동 원리:
JUnit은 런너 중 하나에 의해 실행됩니다.필요에 따라 다른 Runner를 선택해서 테스트 코드를 실행할 수 있습니다.Runner를 지정합니다. @RunWith 표시를 사용하고, 지정한 Runner를 매개 변수로 전달해야 합니다.시스템에서 코드를 실행하기 위해 기본 Runner TestClassRunner를 자동으로 사용합니다.다음과 같습니다.
@RunWith(TestClassRunner.class)
public class JavaTest { …… }
 
JUnit4는'매개 변수화 테스트'의 개념을 제시하고 테스트 함수 하나만 써서 이 몇 가지 상황을 매개 변수로 전달하여 한꺼번에 테스트를 완성한다.코드는 다음과 같습니다.
 
@RunWith(Parameterized.class)public class JavaTest {private int param;private int param2;private int result;
 @Parameters public static Collection data() {return Arrays.asList(new Object[][]{ { 2, 4, 6 }, { 0, 0, 0 }, { -3, 9, 6 } });}
//구조 함수, 변수를 초기화하는public JavaTest(int param, int param2, int result) {this.param = param;this.param2 = param2;this.result = result;}@Test public void run() {//do some thing use args, and assert itint expected = param + param2;assertEquals(expected, result);}@Ignore("lala") public void lala() {assertEquals(3,3);}} 
우선, 이 테스트에 새로운 클래스를 생성하고, 이 클래스에 Runner를 지정해야 합니다. 특수한 기능은 특수한 Runner: @RunWith (Parameterized.class) 두 번째 단계에서 테스트 데이터의 집합을 정의해야 합니다. 즉, 상술한 데이터 () 방법입니다. 이 방법은 임의로 명명할 수 있지만 @Parameters 표시를 사용하여 수식해야 합니다.이것은 2차원 그룹으로 각 그룹의 데이터가 테스트Instance를 생성합니다.세 번째 단계, 구조 함수, 전해오는 매개 변수를 얻는다.마지막으로 얻은 매개 변수로 테스트합니다. @Test public void …
3. 포장 테스트: 나누어 치료하는 방법을 취하면 우리는 여러 종류를 써서 테스트의 난이도를 낮출 수 있다.우리는 때때로 모든 테스트를 한 번 뛰기를 희망한다. 이때 우리는 패키지 종류인 import junit를 쓴다.framework.JUnit4TestAdapter;import org.junit.runner.RunWith;import org.junit.runners.Suite;   @RunWith(Suite.class)@Suite.Suite Classes({Java Test.class,Just Do.class})public class Test All {} 4, 다중 스레드 테스트 JUnit4의 Test를 작성한 후에 집적도가 비교적 높은 테스트 용례에 대해 병렬 방문 상황에서의 테스트를 완성하고 싶지만 JUnit4의 부족한 상황은 제공되지 않았습니다. 저는main 함수를 작성한 다음에 몇 개의 스레드를 만들고 몇 개의 스레드에서 테스트 용례를 동시에 실행하여 테스트를 진행하고 싶습니다.병렬 접근을 시뮬레이션합니다. 다음은 구체적인 예입니다:public class Test Example {@Testpublic void test Method () {System. out.println ("test success!");}public class PerfomanceTest {public static void main(String[] args) {new Thread() {public void run() {//JUnitCore.runClasses(new Class[] { TestExample.class });           (1)//new JUnitCore().run(Request.method(TestExample.class, "testMethod"));        (2)}}.start();}}주: 표지 1 또는 표지 2 중 하나만 사용하면 테스트할 수 있습니다.이제 JUnit4를 사용하여 자체 테스트를 개발할 수 있습니다.

좋은 웹페이지 즐겨찾기