mil*_*lie 0 c# unit-testing xunit fluent-assertions
我正在 Visual Studio 2019 中编写 C# 单元测试。我使用 Xunit 和 FluentAssertion。
其中一项测试中的两行主要代码(出于说明目的)是:
Action a = () => new SomeClass(null);
a.Should().Throw<ArgumentNullException>();
Run Code Online (Sandbox Code Playgroud)
但是,这会导致编译器 CA1806 警告:“Ctor_WhenInvalidArgs_ThenThrowException 创建了从未使用过的 SomeClass 的新实例。将该实例作为参数传递给另一个方法,将该实例分配给变量,或者在不需要时删除对象创建。”
如何解决警告,同时仍然使用 FluentAssertion 以确保构造函数抛出正确的异常?
创建类的新实例时,SomeClass
您最终创建了一个函数,构造函数“返回”一个新实例。但是,您将其分配给一个操作,因此“结果”被忽略。
改用Func<T>
CS1806就消失了。
Func<SomeClass> f = () => new SomeClass(null);
f.Should().Throw<ArgumentNullException>();
Run Code Online (Sandbox Code Playgroud)