2016-11-14 26 views
4

Я пытаюсь использовать сценарий торта для запуска тестовых примеров, написанных в Xunit, используя сценарий торта, мне нужно знать количество пройденных и счет неудачных тестов.Как получить пройденный и неудачный счетчик тестов в xunit, используя сценарий cake (C# make)

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

Ссылка: http://www.cakebuild.net/dsl/xunit-v2

Может кто-нибудь предложить, пожалуйста, как получить число прошло и не тестовых случаев?

+0

Вы имеете в виду отчет об испытаниях или хотите, чтобы эти значения использовались для чего-то еще? – Nkosi

+0

@Nkosi XUnit2 (testAssemblies); Эта строка будет запускать тестовые примеры в упомянутой DLL – Venkat

+0

@Nkosi. Я хочу получить сводку выполнения тестового примера, например, счетчик неудачных попыток, передает количество проверочных случаев или даже просто передается или не выполняется на уровне кода – Venkat

ответ

10

Для считывания вывода XUnit вам необходимо использовать XUnit2Aliases​.XUnit2(IEnumerable < FilePath >, ​XUnit2Settings) + XmlPeekAliases.

формат
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"); 
1

Как и большинство испытаний бегунов, XUnit возвращается количество неудачных тестов в коде возврата из консоли. Из коробки Cake выдает исключение и, следовательно, не выполняет сборку, когда код возврата инструмента не равен нулю.

Это можно увидеть в XUnit Runner тесты здесь:

https://github.com/cake-build/cake/blob/08907d1a5d97b66f58c01ae82506280882dcfacc/src/Cake.Common.Tests/Unit/Tools/XUnit/XUnitRunnerTests.cs#L145

Поэтому для того, чтобы знать, является ли: он передается

просто или не в уровне кода

Это неявно известно, была ли выполнена сбой или нет. Я обычно использую стратегию, подобную этой:

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-отчет.