如何测试调用是对void方法进行的,没有任何内容断言

时间:2014-08-08 10:09:11

标签: java junit mockito testcase

在下面的代码中,我介绍了if语句的两个分支之一。但我也想测试另一个分支,即this.tom != null

public void setTom(boolean cmsConsent, boolean ebConsent) {
    if(this.tom== null){
        this.tom= new Tom(cmsConsent,ebConsent);
    }
}

如何编写断言语句以覆盖所有分支?

2 个答案:

答案 0 :(得分:0)

看来你的领域“汤姆”是一个简单的私人领域? 如果它没有被注入,你就不能将它模拟为是否为空。

我猜你也有汤姆对象的Getter? 如果您要更改代码:

if(this.tom== null){

if(this.getTom() == null){

你可以使用Mockito的SPY功能嘲笑Getter。 (如果你愿意,我可以进一步解释)

PS:PowerMock(ito)始终可以通过字节操作来增强您的代码,但它只能在必要时使用。

答案 1 :(得分:0)

您是否直接从测试中致电setTom?如果是这样,您不断言所有分支都被覆盖,您只需通过您对代码的了解来测试所有分支。致电setTom两次,一次使用tom==null,一次使用tom != null。分支机构。