You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.7 KiB
1.7 KiB
说明
断言:不发生异常
高版本取消了 Assert.NotThrow() 断言,使得断言 "代码断不发生异常" 比较困难。 解决方法:
- 使用 xUnit 自带 Record 变通实现
//待执行代码段 Action codeSnippet = () => { //业务代码 //模拟异常 //throw new Exception("我是特意抛出的异常!"); }; var exception = Record.Exception(codeSnippet); Assert.Null(exception);
- 使用 FluentAssertions 库
//待执行代码段 Action codeSnippet= () => { //业务代码 //模拟异常 //throw new Exception("我是特意抛出的异常!"); }; //断言:不发生异常 codeSnippet.Should().NotThrow();
断言:方法的执行情况(执行过一次等)
目前没法有找到针对方法执行情况的断言(比如 执行过 只执行一次 最少执行一次),但有一些变通方法
- 使用 Moq 库,但是只能针对"模拟对象",并且只针对虚方法或接口方法
public class Person { public string Name { get; set; } public int Id { get; set; } /// <summary> /// 必须是虚方法或接口 /// </summary> public virtual void DoSomething() { Console.WriteLine("我是方法"); } } using Moq; namespace WatchStudy.CancellationTokenStudy { public class UnitTest1 { //测试方法 [Fact] public void Test1() { //模拟方法 var mock = new Mock<Person>(); mock.Setup(foo => foo.DoSomething()); //调用方法一次 mock.Object.DoSomething(); //断言 DoSomething 方法执行一次 mock.Verify(foo => foo.DoSomething(), Times.Once()); } } }