如果您知道如何使用 JMockit,这个问题是不言自明的:如何模拟具有泛型的方法?我想模拟这个方法: public T save(T entity) 但它总是抛出这样的异常:

mockit.RealMethodNotFoundForMockException: Corresponding real methods not found for the following mocks:
Object save(Object)
    at mockit.internal.RedefinitionEngine.modifyRealClass(RedefinitionEngine.java:130)
    at mockit.internal.RedefinitionEngine.modifyRealClass(RedefinitionEngine.java:88)
    at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:72)
    at mockit.Mockit.setUpMocks(Mockit.java:197)
    at com.mytest.MyTest.setUp(AdminManagerImplTest.java:83)

最佳答案

它对我有用,例如

套餐一;

导入 junit.framework.TestCase;
导入 mockit.Mockit;

公共(public)类 JMockitCoreExampleTest 扩展了 TestCase {

公共(public)类 MockMe {
公共(public) T 保存(T t){
返回空;
}
}

公共(public)无效 testDoOperationAbc() {
Mockit.redefineMethods(MockMe.class, SayThatYouMockMe.class);
MockMe 模拟 = new MockMe();
System.out.println(mock.save("aaa"));
}

公共(public)静态类 SayThatYouMockMe {
公共(public) T 保存(T t){
返回 t;
}
}
}

输出

加载的外部工具:mockit.integration.junit3.JUnitTestCaseDecorator
加载的外部工具:mockit.integration.junit4.JUnit4ClassRunnerDecorator
啊啊啊啊

也许你在 mock hibernate 的保存方法?如果是这样,请尝试使用 jmockit 的 hibernate3emul.jar

10-08 10:54