java - 如何为使用新的内部函数创建对象的java类编写junit测试?

标签 java spring spring-boot junit mockito

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

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);
}

最佳答案

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

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

关于java - 如何为使用新的内部函数创建对象的java类编写junit测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62304814/

相关文章:

java - 启动新的 Activity 会导致应用程序重新启动

java - 未从 bootstrap.properties 或外部配置服务(spring-cloud-config)中选取日志文件位置

java - Spring Autowiring 接口(interface)

java - 最快的 Java 自由可再发行数据库

java - 循环遍历 ArrayList 时删除该元素

java - 手动创建实例时如何使@autowire在spring中工作

java - 使用 Xpath 时按钮位置错误?

java - 简单的 Spring Boot 应用程序的 ResourceLoader null

spring-boot - ClassNotFoundException : org. junit.platform.launcher.TestExecutionListener 运行 JUnit5 时

java - spring boot 应用程序运行,但我在网络浏览器中收到错误 404