4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studio 2019でxUnitを使おうとしてハマったことメモ

Last updated at Posted at 2020-01-18

前提

xUnitプロジェクトの作成で躓く

VS2019の「xUnit テストプロジェクト(.NET Core)」で、プロジェクトを追加したら「コンパイルエラー(CS0246)」のエラーが3つ出ました。

トラブル解決のため焦っており、正確な所は失念しましたが、少なくとも

型または名前空間の名前 'Fact' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)

という、xUnitを使う上では致命的なエラーが出ていました。

「ソリューションのNuGetパッケージの管理」から見ると、以下のパッケージが最新版ではありませんでした。

  • coverlet.collector
  • Microsoft.NET.Test.Sdk
  • xunit
  • xunit.runner.visualstudio

ここでパッケージ最新版への更新を試みると C:\Program Files\dotnet\sdk\NuGetFallbackFolder の中にある System.AppContext.4.1.0 がエラー、などの不穏が発生。
該当のエラーが出ているフォルダは削除してよさそうな情報が見つかったので、エラーが出るフォルダを1つ1つ削除していったら、今度はフォルダ特定できないようなエラー発生。

結論を言うと、キレ気味に NuGetFallbackFolder そのものを削除したら、すんなり更新できました。

Chaining Assertionの導入で躓く

冒頭に出した記事では「githubから直接コードをコピってテストプロジェクトにぶち込むのが良い」と書いてありましたが、正直美しくないと感じました。あくまで個人の主観ですが。

少なくともgithubのモノとバージョンは同一っぽいので、NuGetから入れても、何も起こらない。

(1+1).Is(2) とやっても Is が定義されてない云々、と。

これは、正直参りましたが ChainingAssertion-xUnit ではなく ChainingAssertion-xUnit.Bin を入れるのが正解のようです。

最後に

これ、いわゆるおま環「おまえの環境の問題」かなーとも思ったんですよね…ただ、もし同じことに引っかかってる人がいたらと思い、ざっくりと記事に起こしました。

2020/01/27追記
どなたか宜しければ、Visual Studio CodeでのxUnitの使い方について教えてください、リンクで構いませんので!

おまけ

ちゃんと C# のコードを書ける人には一目瞭然でしょうけど、xUnit.net でユニットテストを始めるのコードは、テストプロジェクトを簡単に動かすため、テスト対象コードをテストプロジェクト内に書いているようです。

実際にテストコードを書くときは、ちゃんとテストプロジェクトとプロダクトプロジェクトを分離しましょうね…大きなお世話だったかな?

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?