1

我无法从 MSpec 断言写入控制台。我正在使用 Nuget 的 v0.5.11(无符号)。这里没有什么激进的,但它不起作用。有人知道我错过了什么吗?

public class When_doing_stuff
{
    It should_out_stuff_to_console = () =>
    {
        var val1 = 1;
        var val2 = 2;
        (val1 + val2).ShouldEqual(3);
        Console.WriteLine(val2); 
    };
}
4

2 回答 2

2

我怀疑您的真实代码中实际上有一个失败的断言。您发布了一个通过断言,它应该打印得很好(正如亚历山大和我都在当地验证过的那样)。

然而,失败的断言会抛出 aSpecificationException并且该Console行将永远不会被执行。您应该在断言之前打印。例如

It should_out_stuff_to_console = () => 
{
    Console.WriteLine(val2);
    (val1 + val2).ShouldEqual(3);
}

mspec以及命令行运行器的输出

cmd> mspec-clr4.exe test.dll

Specs in test:

When doing stuff
Blah
» should out stuff to console

但是,我不建议将调试语句从您的断言打印到控制台,或者您的测试运行一般。它会破坏测试报告(如上所示)。

于 2013-02-20T19:09:08.530 回答
0

事实上,这里的断言没有任何问题,安东尼 :-)

我将发布的代码 user287079 粘贴到一个新的类库中,看看我的控制台中打印了什么:

>mspec-clr4 <somewhere>\bin\Debug\ClassLibrary1.dll

Specs in ClassLibrary1:

When doing stuff
2
» should out stuff to console


Contexts: 1, Specifications: 1, Time: 0.11 seconds
于 2013-02-20T20:10:50.253 回答