我们正在使用 VS2012 和 TFS2012 并为我们的代码编写单元测试。我们想要报告代码覆盖率,并在我们的单元测试中使用 .config 文件来测试 appsettings,还有一些其他的日志设置、MS Enterprise 库设置等。
App.config 在新的测试框架中不起作用
MS的新测试框架应该很棒,但对我来说根本没有那么好。当新框架不再使用配置文件时,我应该如何在配置文件中设置一些基本配置?
我们遇到了混合模式 dll 的问题,并找到了解决方法:添加
<startup useLegacyV2RuntimeActivationPolicy="true">
到 app.config。但这对我们的单元测试项目不起作用。因为配置文件不再存在。上网搜了一下,找到了解决办法
' Visual Studio .Net 4.5 测试项目中 .Net 2.0 混合模式程序集的问题'
这意味着在程序文件目录中编辑 Visual Studio 11 本身的文件,我认为这不是一个很好的解决方案......
一些基本的应用设置怎么样?我该怎么设置这个?
不要使用 .testSettings 文件
MS也不推荐使用旧的 .testsettings 文件,因为使用的是旧的测试框架。如果我使用 .testsettings 文件,我无法在我的 tfs2012 构建服务上设置代码覆盖率。
另一个问题是我们的代码需要一个 dll (system.data.sqlite.dll),但只有在运行时单元测试代码才需要这个 dll。所以不需要参考。我们通过使用 testsettings 文件上的部署选项卡解决了这个问题。但在新框架中,您不应该使用 testsettings 文件。如果需要文件,则具有 [deploymentitem] 属性。但是 deploymentitem 属性只能用于 [testmethod] 而不能用于 [testinitialize] 或 [assemblyinitialize] 方法。但是我们的代码需要[testinitialize]方法中的dll。所以没有办法让dll就位。
只需在 [assemblyinitialize](或 testinitialize)方法中使用 File.Copy 复制它是行不通的。
将 dll 作为文件添加到项目中,并将“复制到输出目录”设置为“始终复制”,如“使用 .runsettings 文件配置单元测试”中所述,也根本不起作用。
(真的不是很好)解决方案是添加 dll 作为参考,然后实例化一个类,然后什么都不做。这种方式需要 dll 否则它不会构建,因此 dll 将自己部署到正确的目录。
如何解决我的问题??? - 我想在我的单元测试中使用配置文件。- 我想在“assemblyinitialise”和/或“classinitialize”方法中部署一些需要的文件。- 我希望启用 TFS2012 每晚构建的代码覆盖率。