我目前正在尝试从NCover运行MSTest.exe,但我相信这个问题通常适用于从命令行运行MSTest.exe。
如果我有“/ noisolation”参数,则MSTest.exe似乎找到并按预期使用app.config。没有它,NCover不会捕获任何覆盖信息。从我迄今为止的研究来看,似乎NCover需要/不分离。所以问题是如何在传递参数时让我的* .config文件工作。
我的NCover设置是:
申请个人资料
C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ MSTest.exe
工作文件夹
C:\ Documents and Settings \ MyProfile \ My Documents \ Visual Studio 2008 \ Projects \ XYZ \ XYZ.CoreTest \ bin \ Debug
申请参数
/ noisolation / testcontainer:“C:\ Documents and Settings \ MyProfile \ My Documents \ Visual Studio 2008 \ Projects \ XYZ \ XYZ.CoreTest \ bin \ Debug \ XYZ.CoreTest.dll”
更新:我添加了一条跟踪,显示我的配置(不奇怪)试图从“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ MSTest.exe.Config”中读取。
更新2:如果可能的话,我不想编辑MSTest.exe.Config。这不是非常便携。
答案 0 :(得分:12)
来自Craig Stuntz的评论link text
如何使用MSTest执行此操作。
在解决方案资源管理器中,右键单击解决方案(而不是项目)。
点击添加,新项目
在“类别”中,选择“测试运行配置”
现在选择“测试运行配置”项并将其添加到项目
在“解决方案资源管理器”中,双击刚刚创建的“测试运行配置”
单击“部署”项
将您的配置文件添加为已部署的文件(或部署包含该文件的整个文件夹,如果适用)
我花了一点时间才弄明白,但我处于类似情况,它对我有用。
答案 1 :(得分:5)
在visual studio中,将App.config文件标记为属性为CopyAlways。 (右键单击文件,选择属性以进入属性面板)
答案 2 :(得分:2)
在NCover Fixes下的http://docs.ncover.com/ref/2-0/whats-new-in-ncover-2-0/release-notes-for-ncover-2-1-0/:
在MSTest上运行覆盖不再需要“/ noisolation”标志。 NCover正确收集了覆盖范围
如果确实已修复,则将NCover升级到2.1.0。也许那会奏效。
答案 3 :(得分:2)
我在使用MSTestRunner Plugin的Jenkins构建中遇到了同样的问题。从配置页面检查Omit NoIsolation解决了这个问题。
答案 4 :(得分:1)
有一种技术可以将详细配置文件的内容组合在一起here。您可以将固定文件包含在MSTest.exe.Config中,然后将应用程序的app.config复制到该固定文件位置。它很难看,但比每次不同的可能性黑客攻击MSTest.exe.Config更便携。
答案 5 :(得分:0)
我以前从未使用NoIsolation,但如果我正确理解它,它会在MSTest类中运行所有测试代码。既然如此,它确实应该读取MSTest的App配置。如果你坚持使用noisolation,我想你必须将你的App.config合并到MSTest.exe.config中。当然,这是一个黑客攻击。
完全避免完全隔离可能会更好。如果是由于错误,请尽可能修复错误。如果无法重新组织(主要重构)您的应用,请解决此错误。我不确定是否有优雅的替代品。
我发现“我认为我们需要找到此问题的根本原因,以避免noisolation切换。您可能需要修改您的应用程序。是否有可能创建一个简单的解决方案来重现相同的问题?“在this URL。
答案 6 :(得分:0)
清除困惑: 不使用/ noisolation =如果找到SameNameAsYourDll.dll.config文件,它将自动部署测试dll,并将用于运行该程序集中的测试的app域的app配置
using / noisolation =我们在测试,你,主机进程和其他一切之间做的所有隔离都在窗外。我们可能仍然会做一些隔离,但是您没有获得app域的额外好处,这对您的测试dll是唯一的。因此,你dll的配置无济于事。
答案 7 :(得分:0)
尝试将其名称从app.config
更改为projectname.extension.**config**
例如,如果您有一个名为proj1
的单元测试项目并使用其dll
,请将app.config
重命名为proj1.dll.config
这对我有用。
答案 8 :(得分:-2)
好吧,我冒的风险是我的帖子将转变为测试单元格的单元,但我认为问题在于你的测试,甚至可能是你的代码。你应该重构。
单元测试应该是原子的。单个测试应该没有外部依赖性,配置文件 这样的依赖性。没有测试应该依赖配置文件。
如果您正在测试使用配置文件中的信息的方法,请重构代码,以便在方法之外读取配置的信息,并将其传递给方法或在调用方法之前设置为属性。这样,您的测试可以将值传递给方法,也可以在测试设置期间设置属性。
如果您需要app.config用于数据库连接字符串,那么您就是自己的。众所周知,DAL难以进行单元测试。如果是Web服务连接字符串,请不要使用它 - 模拟接口。