如何使用cake(c#make)脚本在xunit中传递和失败测试用例计数

Ven*_*kat 6 c# continuous-integration unit-testing xunit cakebuild

我尝试使用cake脚本运行使用cake脚本在Xunit中编写的测试用例,我需要知道传递的数量和失败的测试用例数.

#tool "nuget:?package=xunit.runner.console"
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies);
Run Code Online (Sandbox Code Playgroud)

参考:http://www.cakebuild.net/dsl/xunit-v2

任何人都可以建议如何获得通过和失败的测试用例数量

Old*_*Fox 11

您必须使用XUnit2Aliases .XUnit2(IEnumerable <FilePath>,XUnit2Settings) + XmlPeekAliases来读取XUnit输出.

var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies,
     new XUnit2Settings {
        Parallelism = ParallelismOption.All,
        HtmlReport = false,
        NoAppDomain = true,
        XmlReport = true,
        OutputDirectory = "./build"
    });
Run Code Online (Sandbox Code Playgroud)

xml格式为:( XUnit文档,示例源,Reflex中的更多信息)

<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="nosetests" tests="1" errors="1" failures="0" skip="0">
    <testcase classname="path_to_test_suite.TestSomething"
              name="test_it" time="0">
        <error type="exceptions.TypeError" message="oops, wrong type">
        Traceback (most recent call last):
        ...
        TypeError: oops, wrong type
        </error>
    </testcase>
</testsuite>
Run Code Online (Sandbox Code Playgroud)

然后,以下代码段应该为您提供以下信息:

var file = File("./build/report-err.xml");
var failuresCount = XmlPeek(file, "/testsuite/@failures");
var testsCount = XmlPeek(file, "/testsuite/@tests");
var errorsCount = XmlPeek(file, "/testsuite/@errors");
var skipCount = XmlPeek(file, "/testsuite/@skip");
Run Code Online (Sandbox Code Playgroud)