单元测试:测试之间的依赖性是一个好主意吗?

时间:2014-09-23 12:59:28

标签: java unit-testing junit testng

我来自JUnit,最近开始使用TestNG开始的项目 TestNG具有的一个功能,您可以定义测试是否依赖于其他测试。

这让我感到惊讶,因为我一直认为测试需要独立。他们必须创建自己的数据,断言并继续前进。这对我来说听起来很混乱。

如果这是一个好主意,我想收集反馈意见。

2 个答案:

答案 0 :(得分:1)

在我看来,测试应该是独立的。正如@daydreamer所说,一个好的做法是在抽象类中放入一些util / shared代码来简化测试代码。让我们考虑测试CRUD,我认为测试这种东西的最佳方法是:在安装方法中测试创建,在常规测试中测试读取和更新,最后在清理方法中测试删除。测试结果不能依赖于资源(例如数据库中的数据)。

答案 1 :(得分:1)

我不使用testNG,但我认为此功能有时可能会有用。

我同意独立测试的想法,这意味着为一个测试创建的数据不应该被另一个测试用于避免副作用。

但是,有时您知道如果您的程序无法执行简单的任务A,它将无法执行更复杂的任务B.因此,如果A的测试失败,您知道B的测试也将失败。例如,如果我的程序甚至无法解析'{"a":1}'(任务/测试A),我认为我不能解析复杂的json字符串(任务/测试B)。

如果你有一个使得任务A不可能的回归,那么像B这样的每一个更复杂的操作都会失败,并且原因一见钟情就不会很明显(报告将显示X失败的测试,而只修复一个将解决所有问题)。如果您的代码包含有关依赖项的信息,您将直接知道导致问题的测试(并且测试框架将不会运行肯定会失败的测试)。