gpt4 book ai didi

unit-testing - VS2012 & TFS2012 单元测试主要问题

转载 作者:行者123 更新时间:2023-12-04 01:13:35 25 4
gpt4 key购买 nike

我们正在使用 VS2012 和 TFS2012 并为我们的代码编写单元测试。我们想要报告代码覆盖率,并在我们的单元测试中使用 .config 文件进行测试 appsettings,还有一些其他的日志设置、MS Enterprise 库设置等。

App.config 在新的测试框架中不起作用

MS的新测试框架应该很棒,但对我来说它根本没有那么好。
当新框架不再使用配置文件时,我如何在配置文件中设置一些基本配置?

我们遇到了混合模式 dll 的问题,并找到了解决方法:添加

<startup useLegacyV2RuntimeActivationPolicy="true"> 

到 app.config。但这对我们的单元测试项目不起作用。因为配置文件不再存在。网上搜了下解决办法

' Problems with .Net 2.0 Mixed Mode Assemblies inside Visual Studio .Net 4.5 Test Projects '

这意味着在程序文件目录中编辑 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 作为文件添加到项目中,并将“复制到输出目录”设置为“始终复制”,如“ Configuring Unit Tests by using a .runsettings File”中所述。 ' 也根本不起作用。

这个(真的不是很好)解决方案是添加 dll 作为引用,然后实例化一个类并且不使用它。这样 dll 是需要的,否则它不会构建,因此 dll 将自己部署到正确的目录。

如何解决我的问题???
- 我想在我的单元测试中使用配置文件。
- 我想在“assemblyinitialise”和/或“classinitialize”方法中部署一些需要的文件。
- 我希望在我的 TFS2012 夜间构建中启用代码覆盖率。

最佳答案

a) App.config 在新的测试框架中不起作用

这应该仍然有效。我认为在这种情况下缺少的是这个 .config 文件没有与您的测试 dll 一起复制。您能否将其设置为部署项目并重试?

b) 不要使用 .testSettings 文件

  • .testsettings 和代码覆盖率。
    VS 2012 版本仍然支持使用 .testsettings 文件设置代码覆盖率。您只需选择 mstest 2010 测试运行程序并在构建定义中指定您的 .testsettings 文件

  • 如果您在 .testsettings 文件中除了代码覆盖率设置之外什么都没有,那么您可以轻松迁移到 2012 测试运行器并在下拉项中选择“启用代码覆盖率”
  • 复制测试初始化​​所需的文件
    您可以通过 .testsettings 文件执行此操作,也可以执行构建后文件复制任务。这样做非常简单,对其他任何事情都没有影响。使用“复制到输出目录=始终复制”确实有效。请使用示例解决方案尝试一下,看看您是否可以缩小为什么这不适用于您的设置。
  • 关于unit-testing - VS2012 & TFS2012 单元测试主要问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13048879/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com