※本稿は 2021/12/8 時点の情報に基づいています。
2021 年 11 月は .NET のリリース祭り
Visual Studio 2022 とか C# 10 とか .NET 6 とか、 .NET 関連のリリースが 11 月に一気に押し寄せてきました。 手元のプロジェクトもいくつか .NET 6 への対応を始めているのですが、多くの新機能の中で最も役に立っている実感があるのが Null 許容参照型です。 何気なく書いていたコードの中に、 Null 参照になってしまう可能性があるコードって結構あるんだなーと。 お前がポンコツだからいけないんだろ、という話は置いといて。
XUnit と Null 許容参照型
そんな Null 許容参照型ですが、 XUnit の最新の安定板リリースである 2.4.1 では、 Null 許容参照型に対する考慮が入っていません。 テストプロジェクトで Null 許容参照型のフロー解析を使うと、いたるところで警告が出るはずです。
環境
- Visual Studio 2022
- .NET 6
- Xunit 2.4.1 / 2.4.2-pre.12
検証
例えば以下の SampleMethod をリフレクションで探すようなテストを書いてみます。
public class SampleClass { public void SampleMethod() { } }
テストコードは以下のようになります。
public class MethodInfoTest { [Fact] public void Test1() { var type = typeof(SampleClass); var methodInfo = type.GetMethod("SampleMethod"); Assert.NotNull(methodInfo); Assert.Equal("SampleMethod", methodInfo.Name); } }
このテストプロジェクトで Null 許容参照型のフロー解析を有効にしていると、 Xunit 2.4.1 ではフロー解析の警告が出ます。
Assert.NotNull で null ではないことが確定しているので、この警告はいやです。
解決策
Xunit 2.4.2-pre.12 にアップデートしましょう。 このバージョンからフロー解析のための属性がテストメソッドに付与されるようになっており、警告が出ないようになりました。
サンプルコード
サンプルコードは以下から参照できます。