gpt4 book ai didi

java - Mockito RETURNS_SMART_NULLS 回答奇怪的行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:13 29 4
gpt4 key购买 nike

我在 Mockito 1.9.5 中使用注释 @Mock(answer=Answers.RETURNS_SMART_NULL) 以便在发生某些意外的模拟调用时获得一些 SmartNullPointerException。

不幸的是,测试通过了,即使没有模拟至少一个重要的调用。明确:我的意思是不是自己找到我遗漏的东西,而是未通过测试因为> 我没有 mock 这些方法。我想在不使用 Mockito.verifyNoMoreInteractions(...)

的情况下执行此操作

我的测试:

@RunWith(MockitoJUnitRunner.class)
public class ContextServiceImplTest {

@Mock(answer = Answers.RETURNS_SMART_NULLS)
private IAccountDAO accountDaoMock;
@Mock(answer = Answers.RETURNS_SMART_NULLS)
private IRuleService ruleServiceMock;
@Mock(answer = Answers.RETURNS_SMART_NULLS)
private ISensorDAO sensorDAOMock;

private ContextServiceImpl contextService;

@Before
public void before() {
contextService = new ContextServiceImpl(accountDaoMock, ruleServiceMock, sensorDAOMock);
}

@Test
public void fillSensor() throws Exception {
// given
String givenSensorId = "123"
final EventDTO givenEvent = new EventDTO();
givenEvent.setSensorId(givenSensorId)

// when
final Context context = contextService.getContext(givenEvent);

// then (should fail and throw explicit exception

}

待测代码:

public class ContextServiceImpl {
...

public Context getContext(final EventDTO event) throws Exception {
final String sMethodName = "getContext";
final String sensorId = event.getSensorId();
Context context = new Context();

try {
final Sensor sensor = sensorDAO.findById(sensorId);
context.setSensor(sensor);
return context;
} catch (final NoResultException nre) {
throw new BusinessException(ValidationCode.UNSUPPORTED_VALUE, "sensorId");
} catch (final PersistenceException pe) {
throw new TechnicalException(TechnicalCode.DATABASE_ACCESS_PROBLEM);
}
}

感谢您的评论/建议/解释。

最佳答案

您需要在 null 对象 sensor 上调用方法才能使测试失败。

您似乎从未使用过null 对象sensor。这意味着你不会得到任何 NullPointerExceptions(聪明与否)

你可以做一个

AssertEquals(context.getSensor().someMethod(), expectedResult);

或者只是一个

context.getSensor().someMethod();

获取异常。但是

AssertNotNull(context.getSensor());

不足以获得 SmartNullPointerException

关于java - Mockito RETURNS_SMART_NULLS 回答奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30918506/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com