Skip to content

Commit f02d160

Browse files
committed
refactor: standardize console output handling in test classes
1 parent e28e640 commit f02d160

11 files changed

+322
-101
lines changed

CodeLineCounter.Tests/CodeAnalyzerTests.cs

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,37 @@ namespace CodeLineCounter.Tests
66
{
77
public class CodeAnalyzerTests
88
{
9+
private readonly TextWriter _originalConsoleOut;
10+
11+
public CodeAnalyzerTests()
12+
{
13+
_originalConsoleOut = Console.Out;
14+
}
15+
916
[Fact]
1017
public void TestAnalyzeSolution()
1118
{
12-
using StringWriter consoleOutput = new();
13-
Console.SetOut(consoleOutput);
14-
15-
string basePath = FileUtils.GetBasePath();
16-
var solutionPath = Path.GetFullPath(Path.Combine(basePath, "..", "..", "..", "..", "CodeLineCounter.sln"));
17-
18-
// Act
19-
var (metrics, projectTotals, totalLines, totalFiles, duplicationMap, dependencies) = CodeMetricsAnalyzer.AnalyzeSolution(solutionPath);
20-
21-
// Assert
22-
Assert.NotNull(metrics);
23-
Assert.NotEmpty(metrics);
24-
Assert.NotEmpty(projectTotals);
25-
Assert.NotEqual(0, totalLines);
26-
Assert.NotEqual(0, totalFiles);
27-
Assert.NotNull(duplicationMap);
28-
Assert.NotNull(dependencies);
19+
using (StringWriter consoleOutput = new())
20+
{
21+
Console.SetOut(consoleOutput);
22+
23+
string basePath = FileUtils.GetBasePath();
24+
var solutionPath = Path.GetFullPath(Path.Combine(basePath, "..", "..", "..", "..", "CodeLineCounter.sln"));
25+
26+
// Act
27+
var (metrics, projectTotals, totalLines, totalFiles, duplicationMap, dependencies) = CodeMetricsAnalyzer.AnalyzeSolution(solutionPath);
28+
29+
// Assert
30+
Assert.NotNull(metrics);
31+
Assert.NotEmpty(metrics);
32+
Assert.NotEmpty(projectTotals);
33+
Assert.NotEqual(0, totalLines);
34+
Assert.NotEqual(0, totalFiles);
35+
Assert.NotNull(duplicationMap);
36+
Assert.NotNull(dependencies);
37+
}
38+
// Reset console output
39+
Console.SetOut(_originalConsoleOut);
2940
}
3041

3142
[Fact]
@@ -52,6 +63,8 @@ public void AnalyzeSourceCode_Should_Set_CurrentNamespace()
5263
Assert.Equal("MyNamespace", currentNamespace);
5364

5465
}
66+
// Reset console output
67+
Console.SetOut(_originalConsoleOut);
5568

5669
}
5770

@@ -78,6 +91,8 @@ public void AnalyzeSourceCode_Should_Set_FileLineCount()
7891
// Assert - 3 lines only because comment lines are ignored
7992
Assert.Equal(3, fileLineCount);
8093
}
94+
// Reset console output
95+
Console.SetOut(_originalConsoleOut);
8196

8297
}
8398

@@ -104,6 +119,8 @@ public void AnalyzeSourceCode_Should_Set_FileCyclomaticComplexity()
104119
// Assert
105120
Assert.Equal(1, fileCyclomaticComplexity);
106121
}
122+
// Reset console output
123+
Console.SetOut(_originalConsoleOut);
107124

108125
}
109126

CodeLineCounter.Tests/CodeDuplicationCheckerTests.cs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,27 @@ public class CodeDuplicationCheckerTests : IDisposable
77
private readonly string _testDirectory;
88
private bool _disposed;
99

10+
private readonly TextWriter _originalConsoleOut;
11+
1012
public CodeDuplicationCheckerTests()
1113
{
1214
_testDirectory = Path.Combine(Path.GetTempPath(), "CodeDuplicationCheckerTests");
1315
Directory.CreateDirectory(_testDirectory);
16+
_originalConsoleOut = Console.Out;
1417
}
1518

1619
[Fact]
1720
public void DetectCodeDuplicationInFiles_ShouldDetectDuplicates()
1821
{
19-
using StringWriter consoleOutput = new();
20-
Console.SetOut(consoleOutput);
22+
using (StringWriter consoleOutput = new())
23+
{
24+
Console.SetOut(consoleOutput);
2125

22-
// Arrange
23-
var file1 = Path.Combine(_testDirectory, "TestFile1.cs");
24-
var file2 = Path.Combine(_testDirectory, "TestFile2.cs");
26+
// Arrange
27+
var file1 = Path.Combine(_testDirectory, "TestFile1.cs");
28+
var file2 = Path.Combine(_testDirectory, "TestFile2.cs");
2529

26-
var code1 = @"
30+
var code1 = @"
2731
public class TestClass
2832
{
2933
public void TestMethod()
@@ -35,7 +39,7 @@ public void TestMethod()
3539
}
3640
}";
3741

38-
var code2 = @"
42+
var code2 = @"
3943
public class AnotherTestClass
4044
{
4145
public void AnotherTestMethod()
@@ -47,24 +51,27 @@ public void AnotherTestMethod()
4751
}
4852
}";
4953

50-
File.WriteAllText(file1, code1);
51-
File.WriteAllText(file2, code2);
54+
File.WriteAllText(file1, code1);
55+
File.WriteAllText(file2, code2);
5256

53-
var files = new List<string> { file1, file2 };
54-
var checker = new CodeDuplicationChecker();
57+
var files = new List<string> { file1, file2 };
58+
var checker = new CodeDuplicationChecker();
5559

56-
// Act
57-
checker.DetectCodeDuplicationInFiles(files);
58-
var result = checker.GetCodeDuplicationMap();
60+
// Act
61+
checker.DetectCodeDuplicationInFiles(files);
62+
var result = checker.GetCodeDuplicationMap();
5963

60-
// Assert
61-
Assert.NotEmpty(result);
62-
var duplicateEntry = result.First();
63-
Assert.Equal(2, duplicateEntry.Value.Count); // Both files should be detected as duplicates
64+
// Assert
65+
Assert.NotEmpty(result);
66+
var duplicateEntry = result.First();
67+
Assert.Equal(2, duplicateEntry.Value.Count); // Both files should be detected as duplicates
6468

65-
// Clean up
66-
File.Delete(file1);
67-
File.Delete(file2);
69+
// Clean up
70+
File.Delete(file1);
71+
File.Delete(file2);
72+
}
73+
// Reset console output
74+
Console.SetOut(_originalConsoleOut);
6875
}
6976

7077
[Fact]
@@ -114,6 +121,8 @@ public void AnotherTestMethod()
114121
var duplicateEntry = result.First();
115122
Assert.Equal(2, duplicateEntry.Value.Count); // Both methods should be detected as duplicates
116123
}
124+
// Reset console output
125+
Console.SetOut(_originalConsoleOut);
117126

118127
}
119128

@@ -159,6 +168,8 @@ public void AnotherTestMethod()
159168
// Assert
160169
Assert.Empty(result); // No duplicates should be detected
161170
}
171+
// Reset console output
172+
Console.SetOut(_originalConsoleOut);
162173

163174
}
164175

0 commit comments

Comments
 (0)