VisualTrialReporter

This reporter will print the results using thr Test anything protocol version 13

Constructors

this
this()
this
this(ReportWriter writer)

Members

Functions

begin
void begin(string suite, TestResult result)
begin
void begin(ulong testCount)
end
void end(SuiteResult[] )
end
void end(string suite, TestResult test)
update
void update()

Inherited Members

From ILifecycleListener

begin
void begin(ulong testCount)

This method is trigered when before the test start

update
void update()

This method is triggered when you can perform some updates. The frequency varries by the test executor that you choose

end
void end(SuiteResult[] )

This method is trigered when your tests are ended

From ITestCaseLifecycleListener

begin
void begin(string suite, TestResult )

Called before a test execution

end
void end(string suite, TestResult )
Undocumented in source.

Examples

it should print "The Plan" at the beginning

auto writer = new BufferedWriter;
auto reporter = new VisualTrialReporter(writer);
reporter.begin(10);

writer.buffer.should.equal("\n\n");

it should print the test location

auto writer = new BufferedWriter;
auto reporter = new VisualTrialReporter(writer);

auto test = new TestResult("other test");
test.fileName = "someFile.d";
test.line = 100;
test.labels = [ Label("name", "value"), Label("name1", "value1") ];
test.status = TestResult.Status.success;

reporter.begin("some suite", test);

writer.buffer.should.equal("BEGIN TEST;\n" ~
  "suite:some suite\n" ~
  "test:other test\n" ~
  "file:someFile.d\n" ~
  "line:100\n" ~
  `labels:[{ "name": "name", "value": "value" }, { "name": "name1", "value": "value1" }]` ~ "\n");

it should print a sucess test

auto writer = new BufferedWriter;
auto reporter = new VisualTrialReporter(writer);

auto test = new TestResult("other test");
test.fileName = "someFile.d";
test.line = 100;
test.status = TestResult.Status.success;

reporter.end("some suite", test);

writer.buffer.should.equal("status:success\nEND TEST;\n");

it should print a failing test with a basic throwable

auto writer = new BufferedWriter;
auto reporter = new VisualTrialReporter(writer);

auto test = new TestResult("other's test");
test.status = TestResult.Status.failure;
test.throwable = new Exception("Test's failure", "file.d", 42);

reporter.end("some suite", test);

writer.buffer.should.equal("status:failure\n" ~
       "errorFile:file.d\n" ~
       "errorLine:42\n" ~
       "message:Test's failure\n" ~
       "error:object.Exception@file.d(42): Test's failure\n" ~
       "END TEST;\n");

it should not print the YAML if the throwable is missing

auto writer = new BufferedWriter;
auto reporter = new VisualTrialReporter(writer);

auto test = new TestResult("other's test");
test.status = TestResult.Status.failure;

reporter.end("some suite", test);

writer.buffer.should.equal("status:failure\nEND TEST;\n");

it should print the results of a TestException

IResult[] results = [
  cast(IResult) new MessageResult("message"),
  cast(IResult) new ExtraMissingResult("a", "b") ];

auto exception = new TestException(results, "unknown", 0);

auto writer = new BufferedWriter;
auto reporter = new VisualTrialReporter(writer);

auto test = new TestResult("other's test");
test.status = TestResult.Status.failure;
test.throwable = exception;

reporter.end("some suite", test);

writer.buffer.should.equal("status:failure\n" ~
       "errorFile:unknown\n" ~
       "errorLine:0\n" ~
       "message:message\n" ~
       "error:fluentasserts.core.base.TestException@unknown(0): message\n\n" ~
       "    Extra:a\n" ~
       "  Missing:b\n\n" ~
       "END TEST;\n");

Meta