Обычно я пишу мои тесты единицы в F #, какКак захватить выход с XUnit 2.0 и испытаний типа FSharp
open Swensen.Unquote
open Xunit
module MyTests =
[<Fact>]
let ``SomeFunction should return 10``() =
let a = SomeFunction()
test <@ a = 10 @>
[<Fact>]
let ``SomeOtherFunction should return 11``() =
let a = SomeFunction()
test <@ a = 11 @>
Если я хочу, чтобы войти в консоль из XUnit (по http://xunit.github.io/docs/capturing-output.html) нужно написать конструктор, который принимает ITestOutputHelper, а затем использовать это вместо Console.WriteLine и семейства.
using Xunit;
using Xunit.Abstractions;
public class MyTestClass
{
private readonly ITestOutputHelper output;
public MyTestClass(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void MyTest()
{
var temp = "my class!";
output.WriteLine("This is output from {0}", temp);
}
}
Однако модули fsharp являются статическими классами, а тесты являются статическими методами. Нет конструктора для ввода выходного помощника.
Есть ли способ получить доступ к текущему выходному помощнику для текущего теста. Я знаю, что могу переписать мои тесты fsharp как нестатические классы, но это нежелательно.
После просмотра источника XUnit.
Я уверен, что это упускается случай. Встает помощник в статические классы.
Может ли это работать вместо вас? http://stackoverflow.com/a/2139303/126014 Вы не пишете о мотивации к желанию захватить вывод, поэтому он может не применяться, но я думал, что хочу указать на этот вариант, на всякий случай. –