我真的迷失了我的错误,我看了很多文档,却找不到我的错误。
我正在测试一个方法服务,里面有一个类和方法:
@Service
public class myServiceImpl implements myService {
public void myMethod(MyObject myObject) throws Exception {
Object2 object2 = new Object2(myObject) // just some mapping and properties
MyClass myClass = new MyClass();
myClass.doStuff(object2); // this is a void method
}
}
所以我的测试是这样的:
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.managenemt.*"}
public class MyServiceImplTest{
@InjectMocks
private MyServiceImpl myService;
@Test
public void myMethodTest() throws Exception {
MyClass myClass = mock(MyClass.class);
doNothing().when(myClass).doStuff(any());
MyObject myObject = //get from mock file, it works
myService.myMethod(myObject);
}
}
测试崩溃是因为它调用了 doStuff 方法,所以我的模拟不工作。
我做错了什么?
可能的原因是使用了powermockito。 PowerMockito 用于模拟静态方法、最终类和其他高级场景。在你的情况下似乎没有必要。 mockito 的测试应该是这样的:
@ExtendWith(MockitoExtension.class)
public class MyServiceImplTest {
@Mock
private MyClass myClass;
private MyServiceImpl myService;
@BeforeEach
public void setUp() {
myService = new MyServiceImpl(myClass);
}
@Test
public void myMethodTest() throws Exception {
MyObject myObject = // get from mock file, it works
Mockito.lenient().doNothing().when(myClass).doStuff(any());
myService.myMethod(myObject);
// Add assertions or verifications if needed
}
}