我的應用程序具有這樣的結構:有一個RepositoryFacade(這是一個Singleton),它使用許多其他ObjectRepository是辛格爾頓(UserRepository等)。如何JMock的一個Singleton
現在我想測試它,嘲笑[Objetct] Repositiries。要做到這一點我做了[Objetct] Repositiry實現一個接口,然後我想:
final IUserRepository mockIUserRepository= context.mock(IUserRepository.class);
RepositoryFacade.getInstance().setUserRepository(mockIUserRepository);
final User testUser = new User("username");
// expectations
context.checking(new Expectations() {{
oneOf (mockIUserRepository).save(testUser);
}});
// execute
RepositoryFacade.getInstance().save(testUser);
而在RepositoryFacade我說:
public IUserRepository userRepository = UserRepository.getInstance();
但是,如果我嘗試運行測試,我獲得:
java.lang.SecurityException: class "org.hamcrest.TypeSafeMatcher"'s signer
information does not match signer information of other classes in the same
package
ps最初我的RepositoryFacade沒有IUserRepository變量,我用它總是詢問UserRepository.getInstance()。what_i_want()。我介紹它嘗試使用JMock,所以如果不需要,我會很高興刪除Singleton的不良使用。
感謝, 安德烈
恭喜,你發現單身人士是一個可怕的想法的原因之一。 :)我最好的建議:[擺脫他們](http://jalf.dk/singleton/) – jalf 2012-08-12 11:09:02