주니트 테스트 케이스 객체 인스턴스화
-
05-07-2019 - |
문제
새로운 (또는 다른) 인스턴스입니다 TestCase
객체는 Junit 테스트 사례에서 각 테스트 방법을 실행하는 데 사용됩니까? 아니면 모든 테스트에 대해 하나의 인스턴스가 재사용됩니까?
public class MyTest extends TestCase {
public void testSomething() { ... }
public void testSomethingElse() { ... }
}
이 테스트를 실행하는 동안 몇 가지 인스턴스 MyTest
수업이 생성 되었습니까?
가능하면 동작을 확인할 수있는 문서 또는 소스 코드에 대한 링크를 제공하십시오.
해결책
Junit Docs에서 귀하의 질문에 대한 명확한 답변을 찾을 수 없었지만 Anjanb의 의도는 각 테스트가 다른 테스트와 무관하므로 각 테스트에 대해 새로운 테스트 케이스 인스턴스를 작성할 수 있다는 것입니다.
비싼 테스트 설정이있는 경우 ( "비품") 테스트 클래스의 모든 테스트 사례에서 공유하려는 경우 @beforeclass 이 결과를 달성하기 위해 정적 방법에 대한 주석 : http://junit.sourceforge.net/javadoc_40/org/junit/beforeclass.html. 그러나 각 테스트마다 새 인스턴스가 여전히 생성 될 수 있지만 @beforeTest 메소드가 초기화 된 정적 데이터에는 영향을 미치지 않습니다.
다른 팁
예, 별도의 인스턴스가 생성됩니다.
이 테스트를 실행하는 동안 MyTest의 2 인스턴스가 생성됩니다.
다른 동작을 원한다면 하나의 옵션은 testng라는 유사한 도구를 사용하는 것입니다.http://testng.org/doc/).
각 테스트 실행마다 하나의 인스턴스가 있습니다. 노력하다
public class MyTest extends TestCase {
public MyTest() { System.out.println("MyTest Constructor");
public void setUp() { System.out.println("MyTest setUp");
public void tearDown() { System.out.println("MyTest tearDown");
public void testSomething() { System.out.println("MyTest testSomething");
public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}
Sourcecode (최신 버전 포함 - 귀하와 내 예제는 Junit 3)가 켜져 있습니다. http://www.junit.org
생성자에서 데이터를 초기화하고 재직하는 것에 대해 우려하고 있기 때문에이를 묻는 경우 테스트 케이스 데이터를 초기화하는 규정 된 방법은 Setup () 및 TearDown ()을 독점적으로 경유합니다.
예, 확실히. 예를 들어 변수에 저장된 데이터는이 설계로 인해 테스트간에 액세스 할 수 없다는 것을 알았습니다.