Skip to content

Commit 08bc32a

Browse files
committed
Add no-coverage test and improve diagnostics in tests
- Add BasicNoCoverage_CollectsDataForCoveredLines test to verify test execution without coverage collection. - Enhance Assert.True error messages to include process ErrorText for better debugging. - Update generated test project to reference TrxReport and explicitly include Tests.cs. - Refactor BranchTests to use explicit string type for result variables. - Minor code style and message consistency improvements.
1 parent f648a45 commit 08bc32a

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

test/coverlet.MTP.validation.tests/CollectCoverageTests.cs

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,29 @@ public CollectCoverageTests()
3232
_localPackagesPath = Path.Combine(_repoRoot, "artifacts", "package", _buildConfiguration.ToLowerInvariant());
3333
}
3434

35+
[Fact]
36+
public async Task BasicNoCoverage_CollectsDataForCoveredLines()
37+
{
38+
// Arrange
39+
using var testProject = CreateTestProject(includeSimpleTest: true,
40+
includeMethodTests: true,
41+
includeMultipleClasses: true,
42+
includeCalculatorTest: true,
43+
includeBranchTest: true,
44+
includeMultipleTests: true);
45+
await BuildProject(testProject.ProjectPath);
46+
47+
// Act
48+
var result = await RunTestsWithCoverage(testProject.ProjectPath, "--formats json", testName: TestContext.Current.TestCase!.TestMethodName!);
49+
50+
TestContext.Current?.AddAttachment("Test Output", result.CombinedOutput);
51+
52+
// Assert
53+
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode} -> '{result.ErrorText}'.\n\n{result.CombinedOutput}");
54+
Assert.Contains("Passed!", result.StandardOutput);
55+
56+
}
57+
3558
[Fact]
3659
public async Task BasicCoverage_CollectsDataForCoveredLines()
3760
{
@@ -45,7 +68,7 @@ public async Task BasicCoverage_CollectsDataForCoveredLines()
4568
TestContext.Current?.AddAttachment("Test Output", result.CombinedOutput);
4669

4770
// Assert
48-
Assert.True( result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode}.\n\n{result.CombinedOutput}");
71+
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode} -> '{result.ErrorText}'.\n\n{result.CombinedOutput}");
4972
Assert.Contains("Passed!", result.StandardOutput);
5073

5174
string[] coverageFiles = Directory.GetFiles(testProject.OutputDirectory, CoverageJsonFileName, SearchOption.AllDirectories);
@@ -71,7 +94,7 @@ public async Task CoverageWithFormat_GeneratesCorrectOutputFormat()
7194
TestContext.Current?.AddAttachment("Test Output", result.CombinedOutput);
7295

7396
// Assert
74-
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode}.\n\n{result.CombinedOutput}");
97+
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode} -> '{result.ErrorText}'.\n\n{result.CombinedOutput}");
7598

7699
string[] coverageFiles = Directory.GetFiles(testProject.OutputDirectory, CoverageCoberturaFileName, SearchOption.AllDirectories);
77100
Assert.NotEmpty(coverageFiles);
@@ -94,7 +117,7 @@ public async Task CoverageInstrumentation_TracksMethodHits()
94117
TestContext.Current?.AddAttachment("Test Output", result.CombinedOutput);
95118

96119
// Assert
97-
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode}.\n\n{result.CombinedOutput}");
120+
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode} -> '{result.ErrorText}'.\n\n{result.CombinedOutput}");
98121

99122
string[] coverageFiles = Directory.GetFiles(testProject.OutputDirectory, CoverageJsonFileName, SearchOption.AllDirectories);
100123
var coverageData = ParseCoverageJson(coverageFiles[0]);
@@ -147,7 +170,7 @@ public async Task BranchCoverage_TracksConditionalPaths()
147170
TestContext.Current?.AddAttachment("Test Output", result.CombinedOutput);
148171

149172
// Assert
150-
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode}.\n\n{result.CombinedOutput}");
173+
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode} -> '{result.ErrorText}'.\n\n{result.CombinedOutput}");
151174

152175
string[] coverageFiles = Directory.GetFiles(testProject.OutputDirectory, CoverageJsonFileName, SearchOption.AllDirectories);
153176
var coverageData = ParseCoverageJson(coverageFiles[0]);
@@ -204,7 +227,7 @@ public async Task MultipleCoverageFormats_GeneratesAllReports()
204227
TestContext.Current?.AddAttachment("Test Output", result.CombinedOutput);
205228

206229
// Assert
207-
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode}.\n\n{result.CombinedOutput}");
230+
Assert.True(result.ExitCode == 0, $"Expected successful test run (exit code 0) but got {result.ExitCode} -> '{result.ErrorText}'.\n\n{result.CombinedOutput}");
208231

209232
// Verify all formats are generated
210233
Assert.NotEmpty(Directory.GetFiles(testProject.OutputDirectory, "coverage.json", SearchOption.AllDirectories));
@@ -257,11 +280,15 @@ private TestProject CreateTestProject(
257280
$(RepoRoot)artifacts/package/$(Configuration.ToLowerInvariant())
258281
</RestoreSources>
259282
</PropertyGroup>
283+
<ItemGroup>
284+
<Compile Include=""Tests.cs"" />
285+
</ItemGroup>
260286
<ItemGroup>
261287
<!-- Use xunit.v3.mtp-v2 which is designed for MTP v2.x -->
262288
<PackageReference Include=""xunit.v3.mtp-v2"" Version=""3.2.1"" />
263289
<PackageReference Include=""Microsoft.Testing.Platform"" Version=""2.0.2"" />
264290
<PackageReference Include=""coverlet.MTP"" Version=""{coverletMtpVersion}"" />
291+
<PackageReference Include=""Microsoft.Testing.Extensions.TrxReport"" Version=""2.0.2"" />
265292
</ItemGroup>
266293
</Project>");
267294

@@ -327,7 +354,6 @@ private string GenerateTestCode(
327354
codeBuilder.AppendLine("using Xunit;");
328355
codeBuilder.AppendLine();
329356
codeBuilder.AppendLine("namespace TestProject;");
330-
codeBuilder.AppendLine();
331357

332358
if (includeSimpleTest)
333359
{
@@ -407,14 +433,14 @@ public class BranchTests
407433
[Fact]
408434
public void Branch_PositivePath_IsCovered()
409435
{
410-
var result = CheckValue(10);
436+
string result = CheckValue(10);
411437
Assert.Equal(""Positive"", result);
412438
}
413439
414440
[Fact]
415441
public void Branch_NegativePath_IsCovered()
416442
{
417-
var result = CheckValue(-5);
443+
string result = CheckValue(-5);
418444
Assert.Equal(""Negative"", result);
419445
}
420446
@@ -544,7 +570,7 @@ private async Task<TestResult> RunTestsWithCoverage(string projectPath, string a
544570

545571
string errorContext = process.ExitCode switch
546572
{
547-
0 => "Success, no errors",
573+
0 => "success, no errors",
548574
1 => "unknown errors",
549575
2 => "test failure",
550576
3 => "test session was aborted",

0 commit comments

Comments
 (0)