저는 몇 년 동안 JUnit에서 일해 왔으며 테스트 내 격리가 fullfil이 아닌 많은 예제를 발견했습니다. I 개발 대부분의 테스트 JUnit 테스트에서 속성을 사용하는 방법은 무엇입니까?
는class ClassToTestTest {
// Attributes
private ClassToTest objectToTest;
// Methods
@Before
public void setup() {
objectToTest = new ClassToTest();
}
@Test
public void test1() {
//do something
Assert...
}
@Test
public void test2() {
//do something
Assert...
}
}
(테스트를 수행하지 ClassToTest 객체하지만 객체) 검체의 내부 상태는 그 특성에 동일한 구조를 따른다. setup() 또는 teardown() 메소드에 결함이있는 경우 objectToTest의 일부 내부 상태가 다른 테스트로 몰래 들어갈 수 있습니다.
공유 상태가없는 것이 더 좋을까요? 더는
class ClassToTestTest {
// Attributes
// No attributes, no internal state
// Methods
@Before
public void setup() {
objectToTest = new ClassToTest();
}
@Test
public void test1() {
localObjectToTest = createObjectToTest();
//do something
Assert...
}
@Test
public void test2() {
localObjectToTest = createObjectToTest();
//do something
Assert...
}
}
내가 두 번째보다 더 할 거의 같은 첫 번째 코드를 알고있는 속성이 없다,하지만 첫 번째 코드에서 당신이
// Methods
@Before
public void setup() {
objectToTest = objectToTest.reset();
}
또는 더 나쁜처럼 뭔가를 할 유혹에 의존 이전 테스트에서 이전 테스트에서 objectToTest를 사용하여 시간을 "절약"하고 빈 setup() 메서드로 끝남
두 번째 코드 다음에 오는 것이므로이 지점에 도달하기가 매우 어렵습니다. 공유 상태가 없으며 모든 객체가 로컬입니다.
귀하의 의견은 무엇입니까? 이해가 되니? 그게 합당한가? 제 생각에는
와우! 나는 그것을 몰랐다. 고마워, 꽤 유익한. TestNG가 그렇게하지 않는 것 같습니다. 잘 알고 있습니다. –