Visual studio NUnit使用coderush或testdriven.net在visual studio中运行;“未发现任何测试”;

Visual studio NUnit使用coderush或testdriven.net在visual studio中运行;“未发现任何测试”;,visual-studio,configuration,nunit,coderush,Visual Studio,Configuration,Nunit,Coderush,我的公司一直在使用MSTest和NUnit。我现在改成只使用NUnit。 代码中充满了架构问题,所以我们可以忽略这些问题,然后研究如何让它真正工作。我想,主要的问题是数据库连接的设置直接从ConfigurationManager.AppSettings[]获取。在这种情况下,它是“SettingsFile”路径。它是主配置文件的路径 我之所以提出这个问题,是因为当“SettingsFile”存在时,如果我把它命名为SettingsFile2,它就不会出错。我还在代码中重命名了对它的引用,所以它仍

我的公司一直在使用MSTest和NUnit。我现在改成只使用NUnit。 代码中充满了架构问题,所以我们可以忽略这些问题,然后研究如何让它真正工作。我想,主要的问题是数据库连接的设置直接从ConfigurationManager.AppSettings[]获取。在这种情况下,它是“SettingsFile”路径。它是主配置文件的路径

我之所以提出这个问题,是因为当“SettingsFile”存在时,如果我把它命名为SettingsFile2,它就不会出错。我还在代码中重命名了对它的引用,所以它仍然有效,不再出错

当NUnit抛出错误时,它将返回未找到的测试

我想也许“SettingsFile”是NUnit保留的应用程序设置,听起来很不可思议,但我没有发现任何与此相关的内容

我还创建了一个完全空白的项目。添加了一个测试C#测试模板项目,添加了一个nunit测试,添加了一个app.config,对其进行了测试,结果成功了。我甚至有相同的app.config设置

我只想重申: 如果我进入测试项目的app.config,并将key=“SettingsFile”更改为key=“SettingsFile2”,然后将我的配置类更改为ConfigurationManager.AppSettings[“SettingsFile2”],而不更改任何其他内容,那么它现在将正确生成。为什么会这样

我知道解决办法是不要在appSettings中使用“SettingsFile”一词。。。但它已经在我们所有的生产服务器、测试服务器、暂存服务器、开发服务器等中实现了。我们没有一种简单的方法来更新所有这些服务器,但如果我们也有,我只需要向经理们说明我的观点

DXCore测试的输出:

Testing started:

Exception:
Message: Exception has been thrown by the target of an invocation.
Source: mscorlib
StackTrace:
   at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at CR_ExtUnitTestRunner.Invoker.InvokeInThread()
InnerException:
Exception:
Message: Error loading settings file
Source: nunit.util
StackTrace:
   at NUnit.Util.XmlSettingsStorage.LoadSettings()
   at NUnit.Util.SettingsService..ctor(Boolean writeable)
   at NUnit.Util.SettingsService..ctor()
   at CR_NUnitTesting.Executor.Initialize()
   at CR_NUnitTesting.Executor.Execute(ExecuteTestData data)
   at CR_NUnitTesting.NUnitExtension.Execute(Int32 major, Int32 minor, ExecuteTestData data)
   at CR_NUnitTesting.NUnitExtension.<InitializePlugIn>b__2(ExecuteTestData data)
InnerException:
Exception:
Message: Object reference not set to an instance of an object.
Source: nunit.util
StackTrace:
   at NUnit.Util.XmlSettingsStorage.LoadSettings()
No tests found.
Duration : 5.25776431101399
测试已开始:
例外情况:
消息:调用的目标已引发异常。
资料来源:mscorlib
堆栈跟踪:
在System.RuntimeMethodHandle.\u InvokeMethodFast(IRuntimeMethodInfo方法、对象目标、对象[]参数、SignatureStruct&sig、MethodAttributes方法属性、RuntimeType类型所有者)
位于System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法、对象目标、对象[]参数、签名sig、MethodAttributes、MethodAttributes、RuntimeType typeOwner)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性、布尔skipVisibilityChecks)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
在System.Reflection.MethodBase.Invoke(对象obj,对象[]参数)处
在CR_ExtUnitTestRunner.Invoker.InvokeInThread()处
内部异常:
例外情况:
消息:加载设置文件时出错
来源:nunit.util
堆栈跟踪:
在NUnit.Util.XmlSettingsStorage.LoadSettings()中
在NUnit.Util.SettingsService..ctor处(布尔可写)
在NUnit.Util.SettingsService..ctor()上
在CR_nunitesting.Executor.Initialize()处
在CR_nunitesting.Executor.Execute(ExecuteTestData)
在CR_nunitesting.NUnitExtension.Execute(Int32主、Int32次、ExecuteTestData)
在CR_nunitesting.NUnitExtension.b_uu2(ExecuteTestData数据)
内部异常:
例外情况:
消息:对象引用未设置为对象的实例。
来源:nunit.util
堆栈跟踪:
在NUnit.Util.XmlSettingsStorage.LoadSettings()中
没有发现任何测试。
持续时间:5.25776431101399
更新:

添加对我们核心项目的引用会导致此问题。 核心项目是读取SettingsFile属性的项目。 请注意,我将IO文件写入放在任何访问设置文件之前,并且没有记录任何内容。 我在核心项目中搜索静态类构造函数。没有。 我不知道为什么添加引用会破坏这一点

更新:

coderush中的单元测试运行程序不会更新以显示正确的测试。 我将配置设置更改为“SettingsFile2”,以便测试可以正常运行,然后单元测试运行程序可以正确更新。但当我右键点击一个测试,并说去测试,它现在显示所有曾经存在的测试,现在被删除

另一件很奇怪的事: Coderush打印两次结果,但只运行一次测试

正在搜索测试。。。 测试总数:2,已筛选:1

CanConfigFirmDatabaseMatchesMappings失败: ... CanConfigFirmDatabaseMatchesMappings失败:

我们(DevExpress)已复制了该版本并在我们的网站上注册。CodeRush单元测试运行程序的修复程序几乎就绪。一旦bug的状态发生更改,欢迎您从问题页面请求包含修复的每日构建。

您是如何复制它的?我尝试在空白的解决方案中复制,但无法复制。我已要求测试运行开发人员进行调查,他们回答说“未找到测试”问题已被复制。问题状态更改后,我们将回复详细信息。以下是有关此问题的一些附加信息。当CodeRush单元测试运行程序运行测试时,它将Directory.CurrentDirectory值设置为TestAssemblyPath,该值被检测为Path.GetDirectoryName(TestAssembly)。NUnit settings服务尝试从ConfigurationManager.AppSettings[“SettingsFile”]获取文件名设置。因此,如果TestAssemblyPath包含.config文件(如下图所示):NUnit SettingsService从“[SettingsFileDirectory]\settings.settings”获取设置,但由于此内容无效而失败。现在我们已经排除了NUnit设置服务初始化,因为它没有影响CodeRush单元测试运行程序的功能。嘿,我收到了您发送的补丁,但它没有修复任何问题。相同的ol‘相同的ol’