java-如何在JMockit中使用通用对象模拟方法?

前端之家收集整理的这篇文章主要介绍了java-如何在JMockit中使用通用对象模拟方法? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  1. mockit.RealMethodNotFoundForMockException: Corresponding real methods not found for the following mocks:
  2. Object save(Object)
  3. at mockit.internal.RedefinitionEngine.modifyRealClass(RedefinitionEngine.java:130)
  4. at mockit.internal.RedefinitionEngine.modifyRealClass(RedefinitionEngine.java:88)
  5. at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:72)
  6. at mockit.Mockit.setUpMocks(Mockit.java:197)
  7. at com.mytest.MyTest.setUp(AdminManagerImplTest.java:83)
最佳答案
确实对我有用

  1. package a;
  2.  
  3. import junit.framework.TestCase;
  4. import mockit.Mockit;
  5.  
  6. public class JMockitCoreExampleTest extends TestCase {
  7.  
  8. public class MockMe {
  9. public T save(T t) {
  10. return null;
  11. }
  12. }
  13.  
  14. public void testDoOperationAbc() {
  15. Mockit.redefineMethods(MockMe.class,SayThatYouMockMe.class);
  16. MockMe mock = new MockMe();
  17. System.out.println(mock.save("aaa"));
  18. }
  19.  
  20. public static class SayThatYouMockMe {
  21. public T save(T t) {
  22. return t;
  23. }
  24. }
  25. }

输出

  1. Loaded external tool: mockit.integration.junit3.JUnitTestCaseDecorator
  2. Loaded external tool: mockit.integration.junit4.JUnit4ClassRunnerDecorator
  3. aaa

也许您在嘲笑冬眠的保存方法?如果是这样,请尝试使用jmockit的hibernate3emul.jar

猜你在找的Java相关文章