Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
.net 将Nunit测试添加到现有解决方案中的公认做法是什么?_.net_Asp.net_Visual Studio_Testing_Nunit - Fatal编程技术网

.net 将Nunit测试添加到现有解决方案中的公认做法是什么?

.net 将Nunit测试添加到现有解决方案中的公认做法是什么?,.net,asp.net,visual-studio,testing,nunit,.net,Asp.net,Visual Studio,Testing,Nunit,我继承了一个大小合理的ASP.net解决方案,它没有自动测试。该解决方案似乎将所有源代码/页面包含在一个解决方案中,没有名称间隔,也没有分层,因此在代码隐藏文件等中有直接的SQL调用 在对这个站点进行更改之前,我想添加一些单元测试,最好使用nunit,因为我熟悉Xunit模型,这样可以让我相信我没有破坏任何东西。我没有太多的.net经验,尤其是我不确定什么时候使用项目和解决方案等,尽管我对C的基本语法等很熟悉 向解决方案中添加单元测试的推荐方法是什么?我应该为测试创建一个单独的解决方案/项目,然

我继承了一个大小合理的ASP.net解决方案,它没有自动测试。该解决方案似乎将所有源代码/页面包含在一个解决方案中,没有名称间隔,也没有分层,因此在代码隐藏文件等中有直接的SQL调用

在对这个站点进行更改之前,我想添加一些单元测试,最好使用nunit,因为我熟悉Xunit模型,这样可以让我相信我没有破坏任何东西。我没有太多的.net经验,尤其是我不确定什么时候使用项目和解决方案等,尽管我对C的基本语法等很熟悉

向解决方案中添加单元测试的推荐方法是什么?我应该为测试创建一个单独的解决方案/项目,然后添加对现有解决方案的适当元素的引用,还是应该在现有解决方案中创建一个单独的项目来容纳测试套件


我真的在寻找这两种方法的优缺点,或者实际上是另一种方法。实现这一目标的最佳方法是什么。

我不确定您是否可以从单元测试开始。记住第一条规则是不要破坏有效的东西,我建议从使用WatiN或Selenium之类的东西进行一些集成或回归测试开始。这两个框架都可以从单元测试框架(如NUnit)运行集成测试。Telerik也做了一个,但它不是免费的,我也没有用过

一旦你准备好了,你就可以开始将代码移动到层中的过程,并且知道你没有破坏网站。现在是引入单元测试的好时机


这可以通过一个包含所有单元测试的项目来实现,其中引用了包含您正在测试的类的项目。我相信将层次划分为项目也是一种很好的做法。

我不确定您是否可以从单元测试开始。记住第一条规则是不要破坏有效的东西,我建议从使用WatiN或Selenium之类的东西进行一些集成或回归测试开始。这两个框架都可以从单元测试框架(如NUnit)运行集成测试。Telerik也做了一个,但它不是免费的,我也没有用过

一旦你准备好了,你就可以开始将代码移动到层中的过程,并且知道你没有破坏网站。现在是引入单元测试的好时机


这可以通过一个包含所有单元测试的项目来实现,其中引用了包含您正在测试的类的项目。我认为将层次划分为项目也是一种很好的做法。

我更喜欢相同解决方案中的新项目

优点:

您的测试总是与被测代码同时编译。 您的测试代码位于单独的程序集中,因此您总是在测试公共接口。 由于测试与被测代码不在同一个项目中,因此不必将测试与应用程序一起部署。 缺点:

您创建了一个并行名称空间继承权,如果您移动测试中的代码,则应该维护该继承权。像resharper这样的工具使这变得更容易。 当有很多项目时,VisualStudio会稍微慢一点。对于数量较少的项目来说,这不是一个问题。
我更喜欢采用相同解决方案的新项目

优点:

您的测试总是与被测代码同时编译。 您的测试代码位于单独的程序集中,因此您总是在测试公共接口。 由于测试与被测代码不在同一个项目中,因此不必将测试与应用程序一起部署。 缺点:

您创建了一个并行名称空间继承权,如果您移动测试中的代码,则应该维护该继承权。像resharper这样的工具使这变得更容易。 当有很多项目时,VisualStudio会稍微慢一点。对于数量较少的项目来说,这不是一个问题。
我会将测试放在同一解决方案中的不同项目中,这样它们就不会与生产版本一起分发

考虑到Michael Feathers的遗留代码的有效性,他有大量关于在未经测试的代码中引入单元测试的技巧

有些重构使单元测试更容易,并且不会改变程序逻辑,例如Visual Studio中内置的重构,您可以在初始阶段使用这些重构来改进程序结构

在启用单元测试的初始阶段,不要害怕让代码变得更糟,比如将应该是私有的方法或字段公开,或者将所有内容都虚拟化,只要在测试就绪时让代码变得更好


这包括在生产代码本身中临时添加测试:第一个业务是测试代码,您可以稍后移动测试。

我会将测试放在同一解决方案中的不同项目中,这样它们就不会随测试一起分发 生产版本

考虑到Michael Feathers的遗留代码的有效性,他有大量关于在未经测试的代码中引入单元测试的技巧

有些重构使单元测试更容易,并且不会改变程序逻辑,例如Visual Studio中内置的重构,您可以在初始阶段使用这些重构来改进程序结构

在启用单元测试的初始阶段,不要害怕让代码变得更糟,比如将应该是私有的方法或字段公开,或者将所有内容都虚拟化,只要在测试就绪时让代码变得更好


这包括在生产代码本身中临时添加测试:第一个业务是测试代码,您可以稍后移动测试。

我还建议阅读Michael Feathers的《有效使用遗留代码》

对于使用遗留代码时的解决方案结构,我通常复制现有解决方案文件Test.Sln,并将新的UnitTests项目添加到新创建的解决方案文件中


我为集成测试添加了另一个测试项目,因为我喜欢将单元测试与集成测试分开

我还建议阅读Michael Feathers的《有效使用遗留代码》

对于使用遗留代码时的解决方案结构,我通常复制现有解决方案文件Test.Sln,并将新的UnitTests项目添加到新创建的解决方案文件中

我为集成测试添加了另一个测试项目,因为我喜欢将单元测试与集成测试分开