我仍然接受单位测试某些事情的约定,对于一个相对简单的类我有一个关于我的JUnit测试的问题:
public class Kite {
private List<String> strings = new ArrayList<String>();
public void addString(String string) { //... }
public void removeString(String string) { //... }
public List<String> getStrings() { //... }
public int getNumStrings() { //... }
}
在这种情况下,我想测试所有四种方法。然而,现在我写的测试都非常相似。它们(不包括删除)都遵循将基本结构添加到风筝的基本结构,然后检查风筝对象中的字符串数。
有没有更好的方法来测试这些“CRUD”类型的方法?
我需要测试它们吗?
答案 0 :(得分:3)
最好在测试中更具体。对于addString(),您要测试:
您添加的字符串存在于集合中。
没有其他字符串作为副作用添加到集合中。
如果将null传递给addString(),则抛出IllegalArgumentException(或者应该是什么行为)
如果你两次传递相同的字符串,行为就是你想要的(可能是IllegalArgumentException,可能是无操作)
明白了吗?您希望为边缘情况添加测试,以及正常行为(有时称为“快乐路径”)。根据可能的输入,可能的输出和可以采用的代码路径来考虑您的测试。
答案 1 :(得分:1)
我会考虑编写一个模拟交易的测试:
所有这些方法都将以这种方式进行测试。