c# - 测试类 - 何时重构?

标签 c# unit-testing nunit automated-tests

我正在使用 NUnit 和 Selenium 用 C# 编写一系列自动测试。

编辑:我正在测试整个网站,首先我为使用该网站的三种类型的成员编写了三个类,这些类包含使用 selenium 来由这些成员执行各种操作的方法。然后创建这些类,并由我的测试类使用适当的输入调用它们的方法。

我的问题是:

我的测试类有多大有关系吗? (即数千次测试?)

什么时候重构我的功能类? (25 或 50 个方法,1000 行代码等)

我一直在尝试阅读有关测试设计的所有内容,因此如果您有任何好的资源,我将不胜感激。

最佳答案

Does it matter how large my test class becomes? (i.e. thousands of tests?)

是的,确实如此。测试需要长期维护,庞大的测试类难以理解和维护。

When is it time to refactor my functionality classes? (25 or 50 methods, 1000 lines of code, etc)

当您开始感觉很难找到特定的测试用例,或者浏览与特定场景相关的测试时。我认为这里没有硬性限制,就像生产类的大小或方法的数量没有硬性限制一样。我个人对测试代码的限制比对生产代码的限制更高,因为测试代码往往更简单,因此开始变得难以理解的阈值更高。但总的来说,具有 50 个测试方法的 1000 行测试类对我来说开始感觉太大了。

我最近不得不使用这样一个测试类,最后​​我对其进行了分区,所以现在我有几个测试类,每个测试类测试特定类*的一个特定方法/用例。我设法将一些旧测试转换为参数化测试,并且所有新测试都编写为参数化测试。我发现参数化测试可以更轻松地查看全局,并立即记住所有测试用例。我在 Java 项目上使用 JUnit 完成了此操作,但我看到 NUnit 2.5 现在也提供了参数化测试 - 您应该检查一下。

*您可能会正确地问,如果我们需要这么多测试用例来覆盖被测试的类,是否应该重构它 - 是的,最终应该重构。它是我们遗留应用程序中最大的类,里面有太多的东西。但首先我们需要准备好测试用例:-) 顺便说一句,这也可能适用于您的类 - 如果您需要这么多测试用例来覆盖它,则可能是被测类试图做太多事情,并且您最好将其一些功能提取到一个单独的类中,并带有自己的单元测试。

关于c# - 测试类 - 何时重构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7358238/

相关文章:

c# - 为什么我的调试器似乎卡在 await 语句中?

c# - EF插入多个相关表

c# - 将 EWS 代码转换为冷融合

c# - 我能否以编程方式更改全局 MSMQ 设置?

unit-testing - 理论与测试 Nunit

unit-testing - 如何测试 Go 的 "testing"包函数?

ios - 使用 Kiwi 测试核心数据实体的后台保存

c# - 单元测试具有接口(interface)类型参数的方法

c# - 具有值数组的 NUnit 测试

c# - CompilerParameters.GenerateInMemory = false 性能问题