@@ -157,12 +157,13 @@ class JUnitTestOutputTestRunner
157
157
UtestShell* currentTest_;
158
158
bool firstTestInGroup_;
159
159
int timeTheTestTakes_;
160
+ unsigned int numberOfChecksInTest_;
160
161
TestFailure* testFailure_;
161
162
162
163
public:
163
164
164
165
JUnitTestOutputTestRunner (TestResult result) :
165
- result_ (result), currentGroupName_(0 ), currentTest_(0 ), firstTestInGroup_(true ), timeTheTestTakes_(0 ), testFailure_(0 )
166
+ result_ (result), currentGroupName_(0 ), currentTest_(0 ), firstTestInGroup_(true ), timeTheTestTakes_(0 ), numberOfChecksInTest_( 0 ), testFailure_(0 )
166
167
{
167
168
millisTime = 0 ;
168
169
theTime = " 1978-10-03T00:00:00" ;
@@ -185,6 +186,14 @@ class JUnitTestOutputTestRunner
185
186
return *this ;
186
187
}
187
188
189
+ JUnitTestOutputTestRunner& endGroupAndClearTest ()
190
+ {
191
+ endOfPreviousTestGroup ();
192
+ delete currentTest_;
193
+ currentTest_ = 0 ;
194
+ return *this ;
195
+ }
196
+
188
197
void endOfPreviousTestGroup ()
189
198
{
190
199
runPreviousTest ();
@@ -223,6 +232,22 @@ class JUnitTestOutputTestRunner
223
232
return *this ;
224
233
}
225
234
235
+ JUnitTestOutputTestRunner& inFile (const char * fileName)
236
+ {
237
+ if (currentTest_) {
238
+ currentTest_->setFileName (fileName);
239
+ }
240
+ return *this ;
241
+ }
242
+
243
+ JUnitTestOutputTestRunner& onLine (int lineNumber)
244
+ {
245
+ if (currentTest_) {
246
+ currentTest_->setLineNumber (lineNumber);
247
+ }
248
+ return *this ;
249
+ }
250
+
226
251
void runPreviousTest ()
227
252
{
228
253
if (currentTest_ == 0 ) return ;
@@ -234,6 +259,10 @@ class JUnitTestOutputTestRunner
234
259
result_.currentTestStarted (currentTest_);
235
260
236
261
millisTime += timeTheTestTakes_;
262
+ for (unsigned int i = 0 ; i < numberOfChecksInTest_; i++) {
263
+ result_.countCheck ();
264
+ }
265
+ numberOfChecksInTest_ = 0 ;
237
266
238
267
if (testFailure_) {
239
268
result_.addFailure (*testFailure_);
@@ -244,6 +273,12 @@ class JUnitTestOutputTestRunner
244
273
result_.currentTestEnded (currentTest_);
245
274
}
246
275
276
+ JUnitTestOutputTestRunner& thatHasChecks (unsigned int numOfChecks)
277
+ {
278
+ numberOfChecksInTest_ = numOfChecks;
279
+ return *this ;
280
+ }
281
+
247
282
JUnitTestOutputTestRunner& thatTakes (int timeElapsed)
248
283
{
249
284
timeTheTestTakes_ = timeElapsed;
@@ -333,7 +368,7 @@ TEST(JUnitOutputTest, withOneTestGroupAndOneTestOutputsValidXMLFiles)
333
368
STRCMP_EQUAL (" <?xml version=\" 1.0\" encoding=\" UTF-8\" ?>\n " , outputFile->line (1 ));
334
369
}
335
370
336
- TEST (JUnitOutputTest, withOneTestGroupAndOneTestoutputsTestSuiteStartAndEndBlocks )
371
+ TEST (JUnitOutputTest, withOneTestGroupAndOneTestOutputsTestSuiteStartAndEndBlocks )
337
372
{
338
373
testCaseRunner->start ()
339
374
.withGroup (" groupname" ).withTest (" testname" )
@@ -383,7 +418,7 @@ TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainsATestCaseBlock
383
418
384
419
outputFile = fileSystem.file (" cpputest_groupname.xml" );
385
420
386
- STRCMP_EQUAL (" <testcase classname=\" groupname\" name=\" testname\" time=\" 0.000\" >\n " , outputFile->line (5 ));
421
+ STRCMP_EQUAL (" <testcase classname=\" groupname\" name=\" testname\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (5 ));
387
422
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (6 ));
388
423
}
389
424
@@ -396,9 +431,9 @@ TEST(JUnitOutputTest, withOneTestGroupAndTwoTestCasesCreateCorrectTestgroupBlock
396
431
outputFile = fileSystem.file (" cpputest_twoTestsGroup.xml" );
397
432
398
433
STRCMP_EQUAL (" <testsuite errors=\" 0\" failures=\" 0\" hostname=\" localhost\" name=\" twoTestsGroup\" tests=\" 2\" time=\" 0.000\" timestamp=\" 1978-10-03T00:00:00\" >\n " , outputFile->line (2 ));
399
- STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" firstTestName\" time=\" 0.000\" >\n " , outputFile->line (5 ));
434
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" firstTestName\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (5 ));
400
435
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (6 ));
401
- STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" secondTestName\" time=\" 0.000\" >\n " , outputFile->line (7 ));
436
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" secondTestName\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (7 ));
402
437
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (8 ));
403
438
}
404
439
@@ -423,9 +458,9 @@ TEST(JUnitOutputTest, withOneTestGroupAndMultipleTestCasesWithElapsedTime)
423
458
424
459
outputFile = fileSystem.file (" cpputest_twoTestsGroup.xml" );
425
460
STRCMP_EQUAL (" <testsuite errors=\" 0\" failures=\" 0\" hostname=\" localhost\" name=\" twoTestsGroup\" tests=\" 2\" time=\" 0.060\" timestamp=\" 1978-10-03T00:00:00\" >\n " , outputFile->line (2 ));
426
- STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" firstTestName\" time=\" 0.010\" >\n " , outputFile->line (5 ));
461
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" firstTestName\" assertions= \" 0 \" time=\" 0.010\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (5 ));
427
462
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (6 ));
428
- STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" secondTestName\" time=\" 0.050\" >\n " , outputFile->line (7 ));
463
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" secondTestName\" assertions= \" 0 \" time=\" 0.050\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (7 ));
429
464
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (8 ));
430
465
}
431
466
@@ -438,7 +473,7 @@ TEST(JUnitOutputTest, withOneTestGroupAndOneFailingTest)
438
473
439
474
outputFile = fileSystem.file (" cpputest_testGroupWithFailingTest.xml" );
440
475
STRCMP_EQUAL (" <testsuite errors=\" 0\" failures=\" 1\" hostname=\" localhost\" name=\" testGroupWithFailingTest\" tests=\" 1\" time=\" 0.000\" timestamp=\" 1978-10-03T00:00:00\" >\n " , outputFile->line (2 ));
441
- STRCMP_EQUAL (" <testcase classname=\" testGroupWithFailingTest\" name=\" FailingTestName\" time=\" 0.000\" >\n " , outputFile->line (5 ));
476
+ STRCMP_EQUAL (" <testcase classname=\" testGroupWithFailingTest\" name=\" FailingTestName\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (5 ));
442
477
STRCMP_EQUAL (" <failure message=\" thisfile:10: Test failed\" type=\" AssertionFailedError\" >\n " , outputFile->line (6 ));
443
478
STRCMP_EQUAL (" </failure>\n " , outputFile->line (7 ));
444
479
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (8 ));
@@ -455,7 +490,7 @@ TEST(JUnitOutputTest, withTwoTestGroupAndOneFailingTest)
455
490
outputFile = fileSystem.file (" cpputest_testGroupWithFailingTest.xml" );
456
491
457
492
STRCMP_EQUAL (" <testsuite errors=\" 0\" failures=\" 1\" hostname=\" localhost\" name=\" testGroupWithFailingTest\" tests=\" 2\" time=\" 0.000\" timestamp=\" 1978-10-03T00:00:00\" >\n " , outputFile->line (2 ));
458
- STRCMP_EQUAL (" <testcase classname=\" testGroupWithFailingTest\" name=\" FailingTestName\" time=\" 0.000\" >\n " , outputFile->line (7 ));
493
+ STRCMP_EQUAL (" <testcase classname=\" testGroupWithFailingTest\" name=\" FailingTestName\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (7 ));
459
494
STRCMP_EQUAL (" <failure message=\" thisfile:10: Test failed\" type=\" AssertionFailedError\" >\n " , outputFile->line (8 ));
460
495
}
461
496
@@ -582,7 +617,7 @@ TEST(JUnitOutputTest, TestCaseBlockWithAPackageName)
582
617
583
618
outputFile = fileSystem.file (" cpputest_groupname.xml" );
584
619
585
- STRCMP_EQUAL (" <testcase classname=\" packagename.groupname\" name=\" testname\" time=\" 0.000\" >\n " , outputFile->line (5 ));
620
+ STRCMP_EQUAL (" <testcase classname=\" packagename.groupname\" name=\" testname\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (5 ));
586
621
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (6 ));
587
622
}
588
623
@@ -595,7 +630,80 @@ TEST(JUnitOutputTest, TestCaseBlockForIgnoredTest)
595
630
596
631
outputFile = fileSystem.file (" cpputest_groupname.xml" );
597
632
598
- STRCMP_EQUAL (" <testcase classname=\" packagename.groupname\" name=\" testname\" time=\" 0.000\" >\n " , outputFile->line (5 ));
633
+ STRCMP_EQUAL (" <testcase classname=\" packagename.groupname\" name=\" testname\" assertions= \" 0 \" time=\" 0.000\" file= \" file \" line= \" 1 \" >\n " , outputFile->line (5 ));
599
634
STRCMP_EQUAL (" <skipped />\n " , outputFile->line (6 ));
600
635
STRCMP_EQUAL (" </testcase>\n " , outputFile->line (7 ));
601
636
}
637
+
638
+ TEST (JUnitOutputTest, TestCaseWithTestLocation)
639
+ {
640
+ junitOutput->setPackageName (" packagename" );
641
+ testCaseRunner->start ()
642
+ .withGroup (" groupname" )
643
+ .withTest (" testname" ).inFile (" MySource.c" ).onLine (159 )
644
+ .end ();
645
+
646
+ outputFile = fileSystem.file (" cpputest_groupname.xml" );
647
+
648
+ STRCMP_EQUAL (" <testcase classname=\" packagename.groupname\" name=\" testname\" assertions=\" 0\" time=\" 0.000\" file=\" MySource.c\" line=\" 159\" >\n " , outputFile->line (5 ));
649
+ }
650
+
651
+ TEST (JUnitOutputTest, MultipleTestCaseWithTestLocations)
652
+ {
653
+ testCaseRunner->start ()
654
+ .withGroup (" twoTestsGroup" )
655
+ .withTest (" firstTestName" ).inFile (" MyFirstSource.c" ).onLine (846 )
656
+ .withTest (" secondTestName" ).inFile (" MySecondSource.c" ).onLine (513 )
657
+ .end ();
658
+
659
+ outputFile = fileSystem.file (" cpputest_twoTestsGroup.xml" );
660
+
661
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" firstTestName\" assertions=\" 0\" time=\" 0.000\" file=\" MyFirstSource.c\" line=\" 846\" >\n " , outputFile->line (5 ));
662
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" secondTestName\" assertions=\" 0\" time=\" 0.000\" file=\" MySecondSource.c\" line=\" 513\" >\n " , outputFile->line (7 ));
663
+ }
664
+
665
+ TEST (JUnitOutputTest, TestCaseBlockWithAssertions)
666
+ {
667
+ junitOutput->setPackageName (" packagename" );
668
+ testCaseRunner->start ()
669
+ .withGroup (" groupname" )
670
+ .withTest (" testname" )
671
+ .thatHasChecks (24 )
672
+ .end ();
673
+
674
+ outputFile = fileSystem.file (" cpputest_groupname.xml" );
675
+
676
+ STRCMP_EQUAL (" <testcase classname=\" packagename.groupname\" name=\" testname\" assertions=\" 24\" time=\" 0.000\" file=\" file\" line=\" 1\" >\n " , outputFile->line (5 ));
677
+ }
678
+
679
+ TEST (JUnitOutputTest, MultipleTestCaseBlocksWithAssertions)
680
+ {
681
+ testCaseRunner->start ()
682
+ .withGroup (" twoTestsGroup" )
683
+ .withTest (" firstTestName" ).thatHasChecks (456 )
684
+ .withTest (" secondTestName" ).thatHasChecks (567 )
685
+ .end ();
686
+
687
+ outputFile = fileSystem.file (" cpputest_twoTestsGroup.xml" );
688
+
689
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" firstTestName\" assertions=\" 456\" time=\" 0.000\" file=\" file\" line=\" 1\" >\n " , outputFile->line (5 ));
690
+ STRCMP_EQUAL (" <testcase classname=\" twoTestsGroup\" name=\" secondTestName\" assertions=\" 567\" time=\" 0.000\" file=\" file\" line=\" 1\" >\n " , outputFile->line (7 ));
691
+ }
692
+
693
+ TEST (JUnitOutputTest, MultipleTestCasesInDifferentGroupsWithAssertions)
694
+ {
695
+ testCaseRunner->start ()
696
+ .withGroup (" groupOne" )
697
+ .withTest (" testA" ).thatHasChecks (456 )
698
+ .endGroupAndClearTest ()
699
+ .withGroup (" groupTwo" )
700
+ .withTest (" testB" ).thatHasChecks (678 )
701
+ .end ();
702
+
703
+ outputFile = fileSystem.file (" cpputest_groupOne.xml" );
704
+ STRCMP_EQUAL (" <testcase classname=\" groupOne\" name=\" testA\" assertions=\" 456\" time=\" 0.000\" file=\" file\" line=\" 1\" >\n " , outputFile->line (5 ));
705
+
706
+ outputFile = fileSystem.file (" cpputest_groupTwo.xml" );
707
+ STRCMP_EQUAL (" <testcase classname=\" groupTwo\" name=\" testB\" assertions=\" 678\" time=\" 0.000\" file=\" file\" line=\" 1\" >\n " , outputFile->line (5 ));
708
+ }
709
+
0 commit comments