Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 测试类-何时重构?_C#_Unit Testing_Nunit_Automated Tests - Fatal编程技术网

C# 测试类-何时重构?

C# 测试类-何时重构?,c#,unit-testing,nunit,automated-tests,C#,Unit Testing,Nunit,Automated Tests,我正在使用NUnit和Selenium用C#编写一系列自动测试 编辑:我正在测试整个网站,首先我为使用网站的三类成员编写了三个类,这些类包含使用selenium执行这些成员的各种操作的方法。然后,这些类被创建,它们的方法被我的测试类用适当的输入调用 我的问题是: 我的测试类变得多大有关系吗?(即数千次测试?) 什么时候重构我的功能类?(25或50种方法,1000行代码等) 我一直在努力阅读关于测试设计的所有资料,所以如果你有任何好的资源,我将非常感谢你的链接 我的测试类变得多大有关系吗?(即数千

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

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

我的问题是:

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

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

我一直在努力阅读关于测试设计的所有资料,所以如果你有任何好的资源,我将非常感谢你的链接

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

是的。测试需要长期维护,庞大的测试类很难理解和维护

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

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

最近我不得不使用这样一个测试类,最后我对它进行了分区,所以现在我有几个测试类,每个测试类都测试一个特定类的特定方法/用例*。我设法将一些旧测试转换为参数化测试,所有新测试都作为参数化测试编写。我发现参数化测试可以更容易地查看全局,并同时记住所有测试用例。我在Java项目中使用JUnit实现了这一点,但我看到NUnit 2.5现在也提供了参数化测试——您应该检查一下


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

实际上,我不知道什么是参数化测试,在阅读定义后,我意识到我已经用我的测试类做了这项工作,这就是为什么我有一个单独的类来调用它们。测试类测试网站的功能,这就是它们不断增长的原因,我会接受你的建议,在它们成长的过程中重构它们。如果一个被测试的类不是一个包含数千行代码的上帝类/超类,我无法想象你为什么要为所提到的类设置这么大的测试集,它真的需要这么多的测试吗?也许你需要在测试下重构类,这样测试类也会被简化。我已经编辑以澄清我不是在执行单元测试,而是在测试整个网站。这不重要,当你编写测试时,你也应该遵循常规的开发指南和原则,所以你不能创建这么大的类,应该有某种责任和关注的分离,然后我会把它们重构成更小的专门类,因为它们太大了。谢谢你的建议。