私のアプリケーションにはこの構造があります。Singleton (UserRepository など) である他の多くの ObjectRepository を使用する RepositoryFacade (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 の悪い使用法を削除します。
ありがとう、アンドレア