나는이 다음과 유사 방법 :자체에 대한 널 (null) 값을 반환하는
public void myMethod(MyClass c)
{
if (c == null)
{
return;
}
try
{
c.someMethod();
}
catch (SomeException e)
{
// log the exception, possibly re-throw
}
}
나는 MyClass의 매개 변수의 모의 인스턴스를 설정하는 방법을 찾기 위해 노력하고 있습니다를 c 자체에 대해 null 값을 리턴하고 c.someMethod()는 절대로 호출되지 않습니다. 내 단위 테스트는 다음과 같습니다
@Test
public void Test_myMethod_With_Null_MyClass_Does_Not_Call_someMethod()
{
Mockery mockery = new Mockery()
{{
setImposteriser(ClassImposteriser.INSTANCE);
}};
final MyClass mockMyClass = mockery.mock(MyClass.class);
try
{
mockery.checking(new Expectations()
{{
oneOf(mockMyClass).equals(null);
will(returnValue(true));
never(mockMyClass).someMethod();
}});
}
catch (Exception e)
{
logger.fatal(e);
fail("Exception thrown in test.");
}
Util.myMethod(mockMyClass);
}
을 기본적으로, MyClass에의 모의 인스턴스를 설정하고 그 값이 null 값에 대해 테스트 할 때, 그것이 사실 돌려 보낼 그것에 기대를 설정하고있어 someMethod() 메서드는 호출되지 않습니다.
jMock은 Object 클래스 (equals (null) 부분)에서 제공하는 메서드를 재정의 할 수 없다고 말하므로 테스트가 실패합니다.
jMock으로이 작업을 수행 할 수있는 방법이 있습니까? 이 패턴이 의미가 있습니까? 이것이 유효한 시험입니까? 그렇지 않다면 누구에게나 이것을 테스트하는 방법에 대한 제안이 있습니까?
이것이 실제로 테스트하는 유일한 방법이라고 생각합니다. 즉, null을 전달하는 것입니다. 그냥 mock을 할 실제 방법이 있는지 확인하십시오. 건배! – matt