C# 当测试运行程序中的测试失败时,如何使OpenCover返回错误?
使用以下脚本时:C# 当测试运行程序中的测试失败时,如何使OpenCover返回错误?,c#,cakebuild,C#,Cakebuild,使用以下脚本时: Task("Test-xUnit") .WithCriteria(() => DirectoryExists(parameters.Paths.Directories.PublishedxUnitTests)) .Does(() => { EnsureDirectoryExists(parameters.Paths.Directories.xUnitTestResults); OpenCover(tool => {
Task("Test-xUnit")
.WithCriteria(() => DirectoryExists(parameters.Paths.Directories.PublishedxUnitTests))
.Does(() =>
{
EnsureDirectoryExists(parameters.Paths.Directories.xUnitTestResults);
OpenCover(tool => {
tool.XUnit2(GetFiles(parameters.Paths.Directories.PublishedxUnitTests + "/**/*.Tests.dll"), new XUnit2Settings {
OutputDirectory = parameters.Paths.Directories.xUnitTestResults,
XmlReport = true,
NoAppDomain = true
});
},
parameters.Paths.Files.TestCoverageOutputFilePath,
new OpenCoverSettings()
.WithFilter(testCoverageFilter)
.ExcludeByAttribute(testCoverageExcludeByAttribute)
.ExcludeByFile(testCoverageExcludeByFile));
});
即使存在一些失败的测试,对OpenCover的调用也不会像预期的那样出现异常
如果单元测试确实失败了,是否有方法告诉OpenCover失败?该类包含该属性。通过将其设置为0,您告诉OpenCover返回目标进程的返回代码,而不是它自己的返回代码。你可以找到更多关于这方面的信息。这样,当测试失败时,Cake将正确处理非零退出代码,并由于测试失败而引发异常
上述代码段应更改为以下内容:
Task("Test-xUnit")
.WithCriteria(() => DirectoryExists(parameters.Paths.Directories.PublishedxUnitTests))
.Does(() =>
{
EnsureDirectoryExists(parameters.Paths.Directories.xUnitTestResults);
OpenCover(tool => {
tool.XUnit2(GetFiles(parameters.Paths.Directories.PublishedxUnitTests + "/**/*.Tests.dll"), new XUnit2Settings {
OutputDirectory = parameters.Paths.Directories.xUnitTestResults,
XmlReport = true,
NoAppDomain = true
});
},
parameters.Paths.Files.TestCoverageOutputFilePath,
new OpenCoverSettings { ReturnTargetCodeOffset = 0 }
.WithFilter(testCoverageFilter)
.ExcludeByAttribute(testCoverageExcludeByAttribute)
.ExcludeByFile(testCoverageExcludeByFile));
});