使用 FluentAssertion 时错误识别 Visual Studio 警告 CA1806(不要忽略方法结果)
Incorrect identification of Visual Studio warning CA1806 (Do not ignore method results) when using FluentAssertion
我正在 Visual Studio 2019 年编写 C# 单元测试。我正在使用 Xunit 和 FluentAssertion。
其中一项测试中的两行主要代码(用于说明目的)是:
Action a = () => new SomeClass(null);
a.Should().Throw<ArgumentNullException>();
但是,这会导致编译器出现 CA1806 警告:
“Ctor_WhenInvalidArgs_ThenThrowException 创建一个从未使用过的 SomeClass 的新实例。将实例作为参数传递给另一个方法,将实例分配给变量,或者在不需要时删除对象创建。”
如何在仍然使用 FluentAssertion 的同时解决警告以确保构造函数抛出正确的异常?
创建class的新实例时SomeClass
你最后创建了一个函数,构造函数“returns”一个新实例。但是,你将它分配给一个动作,所以“结果”被忽略了。
改用Func<T>
,CS1806就没了。
Func<SomeClass> f = () => new SomeClass(null);
f.Should().Throw<ArgumentNullException>();
我正在 Visual Studio 2019 年编写 C# 单元测试。我正在使用 Xunit 和 FluentAssertion。
其中一项测试中的两行主要代码(用于说明目的)是:
Action a = () => new SomeClass(null);
a.Should().Throw<ArgumentNullException>();
但是,这会导致编译器出现 CA1806 警告: “Ctor_WhenInvalidArgs_ThenThrowException 创建一个从未使用过的 SomeClass 的新实例。将实例作为参数传递给另一个方法,将实例分配给变量,或者在不需要时删除对象创建。”
如何在仍然使用 FluentAssertion 的同时解决警告以确保构造函数抛出正确的异常?
创建class的新实例时SomeClass
你最后创建了一个函数,构造函数“returns”一个新实例。但是,你将它分配给一个动作,所以“结果”被忽略了。
改用Func<T>
,CS1806就没了。
Func<SomeClass> f = () => new SomeClass(null);
f.Should().Throw<ArgumentNullException>();