从dotCover

时间:2016-10-17 09:38:05

标签: unit-testing tfs tfsbuild dotcover

我有一个TFS 2015构建,它构建了我们的一个应用程序(它是一个ASP.NET Web API应用程序)。作为构建过程的一部分,它运行我们的单元测试。

我有一个 Visual Studio Tes t构建步骤,它运行这些单元测试,它们都通过了。

然后我从同一个版本运行 dotCover 来确定代码覆盖率(我们没有使用内置代码覆盖,因为我们没有企业许可证)。但是,从 dotCover 运行时,所有相同的单元测试都会失败。

我使用脚本步骤来运行批处理文件,该文件调用 dotCover ,如下所示。

E:\ JetBrains \ Installations \ dotCover05 \ dotCover.exe分析coverage.xml /LogFile=dotcover.log

dotCover 日志文件似乎没有说明单元测试失败的原因。

Visual Studio测试构建步骤运行时单元测试通过的任何想法,然后从 dotCover 运行时失败?

3 个答案:

答案 0 :(得分:2)

似乎问题与我的构建使用XML文件来保存某些数据值这一事实有关。当在TFS下运行而不是由dotCover运行时,VSTest可以找到此XML文件。

当dotCover运行时,它会创建一个 TestResults 文件夹,然后将所有必需的文件复制到运行单元测试所需的文件。除XML文件外,将复制所有文件。我已将文件设置为" 始终复制"所以无法理解为什么这个文件没有被复制。我尝试将文件手动复制为批处理文件,但文件夹结构是由dotCover创建的,因此在我实际运行代码覆盖率之前它不存在。

解决方案是使用 DeploymentItem()属性修饰我的测试类。

[TestClass]
[DeploymentItem("File.xml")]

这解决了我的问题。

答案 1 :(得分:1)

确保您的构建服务帐户具有足够的权限来运行dotcove.exe。根据您的E:\JetBrains\Installations\dotCover05\dotCover.exe似乎您未在构建代理上安装 所有用户 。哪个应该安装在%ProgramFiles(x86)%而不是%LOCALAPPDATA%\ JetBrains \ Installations下。

enter image description here

尝试在dotCover中使用CoreInstructionSet参数作为您的情况的解决方法。详情见下图。 enter image description here

执行此操作后,尝试再次运行构建。

enter image description here

答案 2 :(得分:0)

如果文件复制失败,您也可以尝试使用此方法:Shadow-copying in dotCover: if your NUnit tests fail during continuous testing