JMockit을 처음 사용하고 매우 복잡한 클래스의 테스트를 작성한 경우이를 XYZ라고합니다. 각 @Test 메서드에서, 나는 XYZ의 해당 실제 메서드를 호출하고 싶지만 나중에 (또는 때로는 거의 모든) 다른 메서드를 모의합니다.이 메서드는 나중에 확인해야합니다. "java.lang의 내가 테스트를 실행하면JMockit 부분 모의 - 하나를 제외한 모든 메소드
@Test
public void testStart(@Mocked({ "^(start).*" }) XYZ xyz) {
new Expectations() {{
xyz.isValidState(); result = true;
}};
...
}
, 내가 얻을 : 순간 내 첫 번째 테스트 방법은 (내가"시작 "을 제외한 모든 방법을 조롱하려는, 그래서 정규식을 사용하고 있습니다) 다음과 같습니다 .IllegalStateException :이 시점에서 조롱 된 유형에 대한 호출이 누락되었으므로 적절한 조롱 필드 또는 매개 변수 "(첫 번째 기대가 정의 된 행에서)가 선언 된 후에 만 이러한 호출이 표시되는지 확인하십시오. 작업. 내 정규식이 잘못 되었나요? 아니면 또 다른 문제입니까?
나는 "수업을 제외하고는 한 가지 방법을 모의 할 방법이 없다"고 말한 것 같아요. – unigeek
실제로; 지금 고쳤다. –
Rogerio, 나는 문서에서이 문제를 발견하게되었습니다. 여기에 관련이 있습니까? inverse 속성은 기본적으로 false와 같으며 지정된 모의 필터의 의미를 반전시킵니다. 예를 들어, @Mocked ("nanoTime") 또는 @Mocked (methods = "nanoTime", inverse = false)는 System # nanoTime() 메소드가 조롱 될 경우, @Mocked (methods = "nanoTime", inverse = true) 역 지정은 java.lang.System 클래스에서 조롱되지 않는 유일한 메소드가되도록합니다. " – unigeek