【问题标题】:How to write junit test for a java class that create object using new inside functions? [closed]如何为使用新内部函数创建对象的java类编写junit测试? [关闭]
【发布时间】:2020-06-10 13:29:15
【问题描述】:

我有一个 java 类,我必须为其编写 junit 测试。该类是在用于调用另一个方法的参数上创建的。由于同一对象的 diff ref,测试失败。

public MyClass {
     public MyResult myMethod(String a, String b, String c) {
         MyRequest m = new MyRequest();
         m.setA(a);
         m.setB(b);
         m.setC(c);
         MyResult ms = myService.getResult(m);
         log(ms);
         return ms;
    }
}

这是测试类。

@PrepareForTest({ MyService.class, MyClass.class })
public class MyClassTest {
   @InjectMocks
   MyClass myClass;

   @Mock
   MyService myService;

   @Before
   public void setUp() {
       MockitoAnnotations.initMocks(this);
   }

   @Test
   public void myMethod() {
      String a = "a", b="b", c="c";
      MyRequest m = new MyRequest();
      m.setA(a);
      m.setB(b);
      m.setC(c);

      MyResult response = mock(MyResult.class);
      when(myService.getResult(m)).thenReturn(response);

      MyResult result = myClass.myMethod(a, b, c);
      assertNotNull(result);
}

【问题讨论】:

  • 能否提供测试用例?
  • 如果失败是由于 ref diff 导致的,可能你的 MyResult 类缺少 equals 方法?
  • 是的,参考文献有些问题。

标签: java spring spring-boot junit mockito


【解决方案1】:

您可以尝试以下 Mockito 设置。它将接受 MyRequest 类并执行您的代码。

Mockito.when(myService.getResult(Mockito.any(MyRequest.class))).thenReturn(new MyResult());

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多