2014-09-23 83 views
1

我来形式JUnit和最近开始与我开始使用TestNG的项目。
TestNG有一个功能,您可以定义如果您的测试依赖于其他测试。单元测试:测试之间的依赖关系是一个好主意吗?

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

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

+0

当您测试多步骤工作流程时,它可以是一种更简洁的替代方法,即以单一测试方法转储长脚本。类似于需要登录和导航的UI测试。 – chrylis 2014-09-23 13:02:47

+0

如何让抽象单元测试类在单独的函数中做到这一点? – daydreamer 2014-09-23 13:03:38

+0

这只意味着现在每个下游测试都需要样板。 – chrylis 2014-09-23 18:55:56

回答

1

在我看来,测试应该是独立的。正如@daydreamer所说,一个好的做法是将一些util/shared代码放在抽象类中以简化测试代码。让我们考虑测试CRUD,我认为测试这种事情的最好方法是:在设置方法中测试创建,在通常的测试中测试读取和更新,并最终在清除方法中测试删除。测试结果不能依赖资源(例如数据库中的数据)。

1

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

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

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

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

相关问题