我是编写单元测试的新手,在为以下场景编写测试用例时遇到了困难:
Class A
{
public B createB(string name);
public B getB(string name);
public void removeB(B instance);
}
Class B
{
public B(string name);
}
createB()
如果特定名称的实例B
已经存在,该方法将返回 null。因此,为了测试createB()
成功完成的案例,我必须打电话getB()
检查它是否存在然后removeB()
将其删除:
A a = getInstanceOfA();
public void testCreateB()
{
B b = a.getB("B");
if (b != null)
{
a.removeB(b);
}
assertNotNull(a.createB("B"));
}
这违反了“一个测试用例必须失败只有一个原因”的规则,如果测试失败,我不知道问题出在哪里。测试getB()
方法也是一样,createB()
必须调用作为开始测试的先决条件。我正在使用 JUnit,每次开始测试时测试用例都会被打乱。是否有任何最佳实践来确保在这种情况下隔离测试用例?
还要注意,该getInstanceOfA()
方法是从另一个库提供的 API 调用,并且无法控制获取A
.