如何为使用新的内部函数创建对象的 java class 编写 junit 测试?
How to write junit test for a java class that create object using new inside functions?
我有一个 java class 我必须为其编写 junit 测试。 class 是在用于调用另一个方法的参数上创建的。由于同一对象的差异引用,测试失败。
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;
}
}
这是测试class。
@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 class 并将执行您的代码。
Mockito.when(myService.getResult(Mockito.any(MyRequest.class))).thenReturn(new MyResult());
我有一个 java class 我必须为其编写 junit 测试。 class 是在用于调用另一个方法的参数上创建的。由于同一对象的差异引用,测试失败。
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;
}
}
这是测试class。
@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 class 并将执行您的代码。
Mockito.when(myService.getResult(Mockito.any(MyRequest.class))).thenReturn(new MyResult());