commit initial
This commit is contained in:
58
tests/TinyCC.E2ETests/E2ETests.cs
Normal file
58
tests/TinyCC.E2ETests/E2ETests.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace TinyCC.E2ETests;
|
||||
|
||||
public class E2ETests : IAsyncLifetime
|
||||
{
|
||||
private readonly ITestOutputHelper _output;
|
||||
private readonly E2ETestRunner _runner;
|
||||
|
||||
public E2ETests(ITestOutputHelper output)
|
||||
{
|
||||
_output = output;
|
||||
_runner = new E2ETestRunner();
|
||||
}
|
||||
|
||||
public Task InitializeAsync() => Task.CompletedTask;
|
||||
|
||||
public Task DisposeAsync()
|
||||
{
|
||||
_runner.Cleanup();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(GetBasicTestCases))]
|
||||
public async Task BasicFeature_ShouldCompileAndRun(TestCase testCase)
|
||||
{
|
||||
// Act
|
||||
var result = await _runner.RunTestAsync(testCase);
|
||||
|
||||
// Assert
|
||||
_output.WriteLine($"测试: {testCase.Name}");
|
||||
_output.WriteLine($"源代码:\n{testCase.SourceCode}");
|
||||
_output.WriteLine($"结果: {(result.Passed ? "通过" : "失败")}");
|
||||
if (!result.Passed)
|
||||
{
|
||||
_output.WriteLine($"错误: {result.ErrorMessage}");
|
||||
_output.WriteLine($"实际退出码: {result.ActualExitCode}");
|
||||
if (result.ActualOutput != null)
|
||||
{
|
||||
_output.WriteLine($"实际输出: {result.ActualOutput}");
|
||||
}
|
||||
}
|
||||
|
||||
Assert.True(result.Passed, result.ErrorMessage);
|
||||
}
|
||||
|
||||
public static TheoryData<TestCase> GetBasicTestCases()
|
||||
{
|
||||
var data = new TheoryData<TestCase>();
|
||||
foreach (var testCase in TestCases.GetBasicTests())
|
||||
{
|
||||
data.Add(testCase);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user