2013-02-13 4 views
2

Junit 3.x로 작성된 많은 이전 단위 테스트가 있습니다. JUnit 4.x 코딩 표준에 이식하는 것과 관련된 업무가 있는데,이 중 표준은 "extends TestCase"사용을 금지합니다.3.x에서 4.x로 JUnit 테스트 포팅

일부 오래된 테스트에는 super.setUp()에 대한 호출이 있습니다. 그러나이 호출에서 현재 무슨 일이 일어나고 있는지 확실하지 않습니다. 걱정하지 않고이 코드 줄을 삭제할 수 있습니까? 아니면이를 대체해야합니까?

답변

2

각 테스트 전에 setUp()이 호출되기 때문에 super.setUp()을 안전하게 제거 할 수 있습니다.

+1

반드시 그렇지는 않습니다. 테스트가'junit.framework.TestCase'가 아닌 기본 클래스를 가지고 있고 그 기본 클래스가 추상화되지 않은'setUp()'호출을 가지고 있다면, super.setUp()에 대한 호출은 절대적으로 필요합니다. JUnit4로 포팅 한 후에 기본 클래스를 가지고 있다면 (그리고 규칙을 거의 필요로하지 않는다면)'@ Before'와'@ After' 메소드를 좋은 이름으로 만들어 최종적으로 만드십시오. – NamshubWriter

0

줄을 주석 처리 한 다음 테스트를 실행하십시오. 테스트 결과가 올바르게 작성 되었다면 이전에 테스트가 성공했다는 가정하에 테스트 결과가 제공됩니다.

+0

불행하게도 나는 어떤 테스트를 할 시간이 없다. 나는 모든 것을 주석 처리하지 않고 컴파일 할 필요가 있고, 수백 가지 테스트가있다. 앞으로 몇 주 동안 실제로 테스트를 진행할 것입니다. – glenneroo

+0

@glenneroo 각 테스트를 포트로 실행하는 동안 시간을 ​​할애해야합니다. 시간을 낼 수 없다면 나중에 시간이있을 때 시험에 이식하십시오. – NamshubWriter

+0

당신은 유효한 포인트를 가지고 있지만, 내 경우에는 불행히도 옵션이 아닙니다. – glenneroo

0

super.setUp()은 TestCase가 수행하지 않으며 안전하게 제거 할 수 있습니다. 다른 클래스를 확장하는 경우에도 super.setUp() 호출을 유지해야합니다. 그러나 그 하나는 컴파일에 실패하지 않을 것이므로 여러분은 괜찮을 것입니다.

예를 들어 ATest extends BTest와 BTest가 TestCase를 확장한다고 가정합니다. ATest가 아니라 BTest에서 super.setUp() 호출을 안전하게 제거 할 수 있습니다. BTest가 뭔가를 할 수도 있기 때문에 ATest는 여전히 그것을 호출해야합니다.