如何为该void方法编写测试用例?

时间:2020-08-20 04:00:17

标签: java unit-testing junit

我想为此方法编写一个junit测试用例

{{1}}

我知道通常不会测试void方法,但这有一些额外的逻辑值得测试。

2 个答案:

答案 0 :(得分:0)

我知道无效方法通常不会经过测试

那是...不是真的。

为该link字段添加吸气剂。您可以根据需要将其打包为私有(根本没有访问修饰符),甚至可以用@ForTesting对其进行记录。现在,您可以测试您的方法是否根据需要修改了链接(如果这是您的真实代码,则测试将失败;您根本不会更改路径;向这样的字符串添加空字符串也不会更改它。除非path为空,在这种情况下,它将空指针替换为指向字符串"null"的指针。这似乎很奇怪。

注意:请勿使用StringUtils。不好。

例如,StringUtils.isNotBlank有很多问题:

    方法名称中的
  1. 'not'不好; !StringUtils.isBlank()更具可读性。
  2. 这是错误的;如果您传入null,它将回答“ false”,这是不正确的。 null不是对空字符串概念的某种替代选择。 null的意思是“无价值”或“未知”。如果我问你:“我有一件未知的衬衫。它是红色的吗?”,那么唯一明智的答案是:“嗯?我不知道!”。 “是,它是红色”或“否,它不是”都不正确。
  3. Java已经有了这个!只需致电path.isBlank()。或更确切地说,!path.isBlank()

答案 1 :(得分:0)

可以测试无效方法

  1. 如果它们具有任何对象作为参数,则在方法调用后可以声明这些参数
  2. 如果方法抛出任何异常,我们可以断言该方法是否抛出异常

演示班

public class Demo

{

private String path="dummy";

private static final String CONTENTPATH="/content";

private String link;


protected void init()
{
    if(path.length()>0)
    {
        link=path+ "";
    }
}

private boolean isInternal()
{
    return path.contains(CONTENTPATH);
}

public String getLink() 
{
    return link;
}

}

测试用例

class DemoTest {

    @Test
    void test() {
        Demo obj = new Demo();
        obj.init();
        assertEquals("dummy", obj.getLink());
    }

}
相关问题