nunit控制台的Noshadow选项

nunit控制台的Noshadow选项,nunit,Nunit,我有以下问题: 使用/noshadow选项运行nunit控制台有哪些优点和缺点? 你的评论将非常有用 谢谢我发现/noshadow的主要问题是它阻止了您的项目的生成,因为NUnit现在被迫使用并锁定您的DLL。如果禁用此选项,NUnit将创建DLL的副本 如果您试图实践TDD,并且不断地以红色、绿色、重构周期构建项目,那么您就不能轻松地使用/noshadow。您将收到如下错误消息: 进程无法访问文件“bin\Debug\calculator.dll”,因为其他进程正在使用该文件 也许有办法解决这

我有以下问题: 使用/noshadow选项运行nunit控制台有哪些优点和缺点? 你的评论将非常有用
谢谢

我发现/noshadow的主要问题是它阻止了您的项目的生成,因为NUnit现在被迫使用并锁定您的DLL。如果禁用此选项,NUnit将创建DLL的副本

如果您试图实践TDD,并且不断地以红色、绿色、重构周期构建项目,那么您就不能轻松地使用/noshadow。您将收到如下错误消息:

进程无法访问文件“bin\Debug\calculator.dll”,因为其他进程正在使用该文件

也许有办法解决这个问题,但这是我发现的主要问题


至于何时使用这个:我认为主要原因是为了提高性能,但由于大多数真正的单元测试运行得非常快,我不确定何时您真的需要这个。我相信其他人会想出一些很好的例子。

如果您碰巧在测试中依赖任何使用文件位置的东西,比如一些奇怪的程序集加载过程,或者像assembly.getExecutionGassembly()这样简单的东西,然后,您可能会遇到问题,因为NUnit已将您的文件复制到生成位置以外的其他位置


我想说的是,这些问题通常是可以避免的——特别是如果在单元测试中避免触及文件系统。

一个快速警告,Nunit的gradle插件已经改变了如何指定阴影选项。我花了一段时间才找到这个,所以在这里张贴,以防它可以帮助其他人


noShadow由shadowCopy替换,默认为false,即名称已更改,其意义/方向相反。这显然是为了更接近Nunit 3的功能。您可以在

上的插件日志中阅读有关这方面的详细信息,这正是我使用它的原因。我们的UAT上传excel文件,我们使用Assembly.getExecutionGassembly().Location查找它们。如果没有它,我们将不得不在一些配置中存储它们的位置。而且它必须是绝对路径,所以在每台机器上都是不同的。