Как пройти и потерпеть неудачу в подсчете тестовых случаев в xunit, используя скрипт cake(C# make)
Я пытаюсь использовать скрипт торт для запуска тестовых случаев, написанных в Xunit, используя скрипт торт, мне нужно знать количество пройденных и неудачных тестовых случаев.
#tool "nuget:?package=xunit.runner.console"
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll");
XUnit2(testAssemblies);
Ссылка: http://www.cakebuild.net/dsl/xunit-v2
Кто-нибудь может подсказать, как узнать количество пройденных и неудачных тестовых случаев?
2 ответа
Вам нужно будет использовать XUnit2Aliases.XUnit2(IEnumerable
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, пример источника, больше информации в 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 возвращает количество неудачных тестов в коде возврата от консоли. Из коробки Cake генерирует исключение и поэтому не может выполнить сборку, когда код возврата инструмента НЕ равен нулю.
Это можно увидеть в тестах XUnit Runner здесь:
Поэтому, чтобы узнать:
просто это передано или не удалось на уровне кода
Это неявно известно тем, была ли сборка успешной или нет. Я обычно использую стратегию, подобную этой:
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 для преобразования XML-отчета в удобочитаемый HTML-отчет.