나는 JMockIt 1.8를 사용하고, 나는 다음과 같은 클래스가 다음 테스트 클래스와MissingInvocation
public class SimpleUser {
public static void useSimple(final SimpleClass simple) {
System.out.println("useSimple called");
}
public void createAndUse() {
final SimpleClass simple = new SimpleClass();
simple.method();
SimpleUser.useSimple(simple);
}
}
및
public class SimpleClass {
public void method() {
}
}
을 :
public class Tester {
@Mocked SimpleClass simple;
@Test
public void test() {
new Expectations(SimpleUser.class) {
{
new SimpleClass();
simple.method();
SimpleUser.useSimple(simple);
}
};
SimpleUser user = new SimpleUser();
user.createAndUse();
}
}
그리고이 테스트가 통과합니다. 내가 SimpleUser
에서 simple.method()
에 대한 호출과 Tester
에 simple.method()
에 대한 기대, 테스트 오류를 제거 할 때
그러나 :
mockit.internal.MissingInvocation: Missing invocation of
SimpleUser#useSimple(SimpleClass simple)
with arguments: [email protected]
를 나는 기대를 변경하여 전달하는 테스트의 수정 된 버전을 일으킬 수 있습니다 SimpleUser.useSimple(simple)
에서 SimpleUser.useSimple((SimpleClass) any)
으로 변경되었지만 전달되는 인스턴스가 올바른 것으로 주장하고 싶습니다.
은 왜 여부 method()
에 따라 행동 변화라고 않고 는 어떻게 SimpleUser.useSimple()
이 SimpleClass
내에서 메소드를 호출에 의지하지 않고, createAndUse()
에서 만든 SimpleClass
호출되는 것을 보장 할 수 있습니다. 테스트가 실패 simple.method()
은 다음과 같습니다
이 당신의 기대에 오타가 ...
희망이 도움말 :
그러나 기대 블록에 줄을 추가하여 당신이 원하는 것을 테스트 할 수 있습니다 (JMockit 1.14 테스트) - 'SimpleUser.useVisitor (simple);'입니까? – vikingsteve
감사합니다. 코드를 MCV 예제로 줄이면 오타가 발생했습니다 –
새로운 'SimpleClass' 인스턴스가 만들어 졌는지 확인해야합니까? 지나치게 구체적으로 검사하는 것처럼 보입니다. 나는 간단하게 메서드가 null이 아닌 인자 인 SimpleUser.useSimple ((SimpleClass) withNotNull())과 함께 호출되었는지 확인한다. –