2014-10-08 5 views
0

테스트 코드 (src/test/java)에 ClassX 클래스 (src/main/java) 및 ClassXTest 클래스가 있다고 가정합니다. 일부 테스트 방법에서는 ClassX의 메서드 중 하나를 반환하려고하므로 ClassX 및 그 메서드를 재정의합니다. 조롱하는 프레임 워크 나이 클래스를 익명으로 사용하고 싶지 않습니다. 어떤 이름의 클래스 이름을 지정해야합니까? ClassXTestImpl테스트 코드의 클래스 이름 지정 규칙

그것은 세계에서 가장 큰 이름 지정 규칙은 아니지만,이 테스트 코드이며, 생산 코드를 사용하지 않을 것이 명백한 것을 만드는 :

+0

이것은 이해가되지 않습니다. 'ClassX'를 테스트 중이라면 왜 테스트 중에 그것을 덮어 쓰시겠습니까? –

+0

반환 값을 가짜로 만들거나 (예 : WS 또는 DB에 액세스하는 대신 상수를 반환) 또는 무언가를 감지 할 수 있습니다 (예 : 매개 변수의 값을 저장하여 나중에 확인할 수 있음). –

+0

추상 클래스를 테스트하려면 확장해야합니다. –

답변

0

이러한 클래스를 "테스트 별 하위 클래스"라고하며 명명 규칙이 없습니다. http://xunitpatterns.com/Test-Specific%20Subclass.html에서는 테스트중인 클래스를 재정의하는 몇 가지 예를 제공합니다.

+0

이러한 클래스를 "테스트 하위 클래스"라고도하며, 이름 앞에'Testing' 접두어를 앞에 두는 것에 대한 조언을 보았습니다. 예를 들어 프로덕션 클래스'Server', 테스트 케이스 클래스'ServerTest' 및 테스트 서브 클래스'TestingServer'를 예로들 수 있습니다. –

0

개인적으로, 나는이 수업을 부를 것이다. 또한 테스트 클래스의 개인 내부 클래스로 사용할 수도 있습니다. 그런 다음 프로덕션 코드에서 액세스 할 수 없습니다.

일반적으로 나는 Impl을 호출하는 것을 좋아하지 않지만이 경우 ClassX 부분은 클래스가 실제로 무엇을하는지 정의하고 TestImpl 비트는 테스트 구현으로 표시하기위한 것입니다.


제쳐두고에 대한 부분 조롱 :

난 당신이 프레임 워크를 조롱 사용하지 않았다고 말했다 알고 있지만 위해 당신이 method1를 교체하는 경우 쉽게 method2 테스트 할 수 있도록 두 가지 방법 같은 클래스에 존재한다면, 당신이하고있는 일은 프레임 워크를 사용하든 안하든, 부분적 조롱의 한 형태입니다. 특정 프레임 워크와 연결되지 않은 부분적 모의 (Partial Mocking) 문서는 찾기가 어렵 기 때문에 EasyMock's documentation을 제공 하겠지만 대부분의 조롱 프레임 워크는 이러한 종류의 조롱을 지원합니다.