如何使用 cake(c# make) 脚本在 xunit 中通过和失败测试用例计数
How to get passed and fail test case count in xunit using cake(c# make) script
我尝试使用 cake 脚本 运行 使用 cake 脚本在 Xunit 中编写的测试用例,我需要知道通过和失败的测试用例数。
#tool "nuget:?package=xunit.runner.console"
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies);
参考:http://www.cakebuild.net/dsl/xunit-v2
谁能建议如何获得通过和失败的测试用例的数量?
您必须使用 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"
});
xml格式为:(XUnit documentation, the example source, more information in 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>
那么下面的代码片段应该能为您带来信息:
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");
像大多数测试运行器一样,XUnit returns 来自控制台运行器的 return 代码中的失败测试数。开箱即用,当工具的 return 代码不为零时,Cake 会抛出异常,因此构建失败。
这可以在此处的 XUnit 运行器测试中看到:
因此,为了知道是否:
simply it is passed or failed in code level
这通过构建是否成功隐含地知道。我通常使用与此类似的策略:
Task("Tests")
.Does(() =>
{
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies,
new XUnit2Settings {
Parallelism = ParallelismOption.All,
HtmlReport = false,
NoAppDomain = true,
XmlReport = true,
OutputDirectory = "./build"
});
})
.ReportError(exception =>
{
Information("Some Unit Tests failed...");
ReportUnit("./build/report-err.xml", "./build/report-err.html");
});
这是利用 Cake 中的异常处理功能:
http://cakebuild.net/docs/fundamentals/error-handling
发生错误时采取措施。最重要的是,我然后使用 ReportUnit alias 将 XML 报告转换为人类可读的 HTML 报告。
我尝试使用 cake 脚本 运行 使用 cake 脚本在 Xunit 中编写的测试用例,我需要知道通过和失败的测试用例数。
#tool "nuget:?package=xunit.runner.console"
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies);
参考:http://www.cakebuild.net/dsl/xunit-v2
谁能建议如何获得通过和失败的测试用例的数量?
您必须使用 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"
});
xml格式为:(XUnit documentation, the example source, more information in 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>
那么下面的代码片段应该能为您带来信息:
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");
像大多数测试运行器一样,XUnit returns 来自控制台运行器的 return 代码中的失败测试数。开箱即用,当工具的 return 代码不为零时,Cake 会抛出异常,因此构建失败。
这可以在此处的 XUnit 运行器测试中看到:
因此,为了知道是否:
simply it is passed or failed in code level
这通过构建是否成功隐含地知道。我通常使用与此类似的策略:
Task("Tests")
.Does(() =>
{
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies,
new XUnit2Settings {
Parallelism = ParallelismOption.All,
HtmlReport = false,
NoAppDomain = true,
XmlReport = true,
OutputDirectory = "./build"
});
})
.ReportError(exception =>
{
Information("Some Unit Tests failed...");
ReportUnit("./build/report-err.xml", "./build/report-err.html");
});
这是利用 Cake 中的异常处理功能:
http://cakebuild.net/docs/fundamentals/error-handling
发生错误时采取措施。最重要的是,我然后使用 ReportUnit alias 将 XML 报告转换为人类可读的 HTML 报告。