namespace OptionStudy.Next { public class UseXunitTest:IDisposable { private readonly ITestOutputHelper? _output; public UseXunitTest(ITestOutputHelperAccessor outputHelperAccessor) { if (outputHelperAccessor == null) { throw new ArgumentNullException(nameof(outputHelperAccessor)); } _output = outputHelperAccessor.Output; } /// /// xUnit 可用性测试 /// [Fact] public void UsabilityTest() { Assert.True(true, "使用xUnit测试框架!"); _output?.WriteLine("使用 xUnit 框架输出信息测试!"); } /// /// 断言不发生异常 /// 使用:xUnit 变通方法 /// [Fact] public void DoesNotThrow_Test() { //待执行代码段 Action codeSnippet = () => { //业务代码 //模拟异常 //throw new Exception("我是特意抛出的异常!"); }; var exception = Record.Exception(codeSnippet); Assert.Null(exception); _output?.WriteLine("使用 xUnit 变通方法,断言不发生异常!"); } /// /// 断言不发生异常 /// 使用:FluentAssertions 库方式,断言不发生异常 /// [Fact] public void DoesNotThrow_UseFluentAssertions_Test() { //待执行代码段 Action codeSnippet= () => { //业务代码 //模拟异常 //throw new Exception("我是特意抛出的异常!"); }; //断言:不发生异常 codeSnippet.Should().NotThrow(); _output?.WriteLine("使用 FluentAssertions 库方式,断言不发生异常!"); } public void Dispose() { } } }