【发布时间】:2023-03-03 10:51:01
【问题描述】:
如果我使用以下方法进行 JUnit Mockito 测试,它会失败并显示 org.opentest4j.AssertionFailedError: expected: not null。但是之前使用 verify() 和 Assertions.assertNotNull() 的 Mockito-(Parameter-)Test 是可以的。我做错了什么或我不明白什么?这是我的代码:
JUnit5/模拟测试:
@Mock
private MyentityAServiceImpl myentityAServiceImplmock;
@Captor
private ArgumentCaptor<MyentityA> myentityAArgument;
@Mock
private MyentityBdao myentityBdaomock;
@Mock
private MyentityB myentityBmock;
@Mock
private Logger loggermock;
@InjectMocks
private MyentityBServiceImpl teServiceImpl;
@Test
public void setMyentityAOfTeIfNullByLanr17() {
myentityBmock.setLanr7( "1234567" );
final MyentityA myentityA = new MyentityA();
mockito.when( myentityAServiceImplmock.findMyentityAByLanr17( myentityBmock.getLanr7() ) ).thenReturn( myentityA );
mockito.when( myentityBdaomock.save( myentityBmock ) ).thenReturn( myentityBmock );
myentityBmock = teServiceImpl.setMyentityAOfTeIfNullByLanr17( myentityBmock );
mockito.verify( myentityBmock ).setMyentityA( myentityAArgument.capture() );
Assertions.assertNotNull( myentityAArgument );
Assertions.assertNotNull( myentityBmock.getMyentityA() ); // --> org.opentest4j.AssertionFailedError: expected: not <null>
}
测试方法:
public MyentityB setMyentityAOfTeIfNullByLanr17( final MyentityB entity ) {
MyentityA myentityA = entity.getMyentityA();
if ( myentityA != null ) {
return entity;
}
final String lanr17 = entity.getLanr7();
myentityA = myentityAServiceImpl.findMyentityAByLanr17( lanr17 );
if ( myentityA != null ) {
entity.setMyentityA( myentityA );
entity.setModuser( "root" );
return myentityBdao.save( entity );
}
return entity;
}
【问题讨论】: