I can't fake an abstract class directly 및 구현 클래스를 알고 있기 때문에 구현 클래스에 가짜를 추가했습니다.jMockit Fake/MockUp 추상 메서드를 제거하는 방법?
@BeforeClass
public static void fakeCurrentYear() {
// Mocking the abstract 'Calender' does not work, see: https://github.com/jmockit/jmockit1/issues/71
// So we use the implementing class 'GregorianCalendar'.
new MockUp<GregorianCalendar>() {
@Mock public int get(Invocation invocation, int field) {
return 2016;
}
};
}
저는 JUnit 4.12와 Maven 3.x에서 jMockit v 1.31을 사용하고 있습니다.
테스트를 개별적으로 실행하면 모든 것이 정상입니다.
하지만 모든 테스트를 함께 실행하면 구현 클래스의 log4jlogger가 가짜 구현을 사용하기 때문에 다른 테스트가 실패합니다.
이전에 GregorianCalendar
이 해당 메소드를 덮어 쓰지 않았기 때문에 이것이라고 생각합니다. 그러나, 나는 가짜가 testclass 후에 자동적으로 제거되었다고 생각했다! 이거 버그 야?
수동으로 제거 할 수 있습니까? 나는 정적 변수 yearMock = new MockUp<GregorianCalendar>() ...
을 생성하고 @AfterClass
메서드에서 yearMock.tearDown()
을 호출했지만 JMockit v1.25로 스테핑을 시도했지만 아무 것도 변경하지 않았다.