タグ付けされた質問 「xunit.net」

7
NUnit対MbUnit対MSTest対xUnit.net [終了]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 .NET用の単体テストフレームワークは非常にたくさんあります。私はこの小さな機能比較を見つけました:http : //xunit.github.io/docs/comparisons.html 今、私たちは私たちに最適なものを選ぶことになっています。しかし、どうやって?それは重要ですか?最も将来性のあるもので、その背後にまともな勢いがあるのはどれですか。機能について気にする必要がありますか?xUnitは最も近代的で.NET用に特別に設計されているようですが、NUnitも広く受け入れられているようです。MSTestは再びVisual Studioに統合されています...

19
testhost.dllが見つかりません。テストプロジェクトを公開して再試行してください
単一のXUnitテストメソッドを備えた単純なdotnetコアクラスライブラリがあります。 TestLib.csproj: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.console" Version="2.4.1"> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="xunit.runners" Version="2.0.0" /> </ItemGroup> </Project> BasicTest.cs: using Xunit; namespace TestLib { public class …

4
xUnitでコレクションサイズを確認する慣用的な方法は何ですか?
私のテストスイートには、次のようなテストがあります。 [Fact] public void VerifySomeStuff() { var stuffCollection = GetSomeStuff(); Assert.Equal(1, stuffCollection.Count()); } このテストは期待どおりに機能しますが、実行するとxUnitが警告を出力します。 警告xUnit2013:コレクションサイズのチェックにAssert.Equal()を使用しないでください。 ただし、警告では代替案は提案されておらず、グーグル検索により、この警告が出力されることを確認するテストのためにxUnitのソースコードが表示されます。 Assert.Equal()コレクションの長さを確認する正しい方法ではない場合、何をしますか? 明確にするために、たとえば変数を抽出するかAssert.True(stuff.Count() == 1)代わりに使用することで、xUnitを「だまして」この警告を出さないようにすることができます。後者は単にハックであり、前者はxUnitがたとえばの複数の反復を回避しようとしているように感じる場合IEnumerable<T>、これは間違った方法です(問題がある場合はコンパイラーのヒントを個別に取得するため)、そしてxUnitそれ自体は、入力を2回以上評価する必要はありません(実際、C#関数呼び出しのしくみのため、変数の抽出に関係なく、同じ入力を取得する可能性があります)。 そのため、出力からその警告を削除することに興味があるだけではありません。私の質問への回答は、なぜその警告が最初にライブラリに含まれているのか、そして代わりに私が代わりに使用すべきアプローチがより優れている理由を説明しています。
111 c#  xunit  xunit.net 

6
NUnitと同様のxUnit.netでのパラメーター化のテスト
xUnit.netフレームワークには、NUnitの以下の機能に類似した手段はありますか? [Test, TestCaseSource("CurrencySamples")] public void Format_Currency(decimal value, string expected){} static object[][] CurrencySamples = new object[][] { new object[]{ 0m, "0,00"}, new object[]{ 0.0004m, "0,00"}, new object[]{ 5m, "5,00"}, new object[]{ 5.1m, "5,10"}, new object[]{ 5.12m, "5,12"}, new object[]{ 5.1234m, "5,12"}, new object[]{ 5.1250m, "5,13"}, // round new object[]{ 5.1299m, "5,13"}, …

4
xUnit.net:グローバルセットアップ+ティアダウン?
この質問は、ユニットテストフレームワークxUnit.netに関するものです。 テストを実行する前にコードを実行する必要があります。また、すべてのテストを実行した後にコードを実行する必要があります。グローバルな初期化および終了コードを示すために、ある種の属性またはマーカーインターフェイスがあるべきだと思いましたが、それらを見つけることができませんでした。 または、xUnitをプログラムで呼び出すと、次のコードで必要な処理を実行できます。 static void Main() { try { MyGlobalSetup(); RunAllTests(); // What goes into this method? } finally { MyGlobalTeardown(); } } 誰かがいくつかのグローバルなセットアップ/ティアダウンコードを宣言的またはプログラム的に実行する方法についてのヒントを教えてもらえますか?
98 c#  .net  xunit.net 

8
複雑なパラメーターを[理論]に渡す
Xunitには優れた機能がありTheoryます。属性を使用して1つのテストを作成し、データを配置できます。InlineData属性に多くのテストを生成し、それらすべてをテストします。 私はこのような何かをしたいが、私のメソッドへのパラメータは、(のような「単純なデータ」ではありませんstring、int、double)が、私のクラスの一覧: public static void WriteReportsToMemoryStream( IEnumerable<MyCustomClass> listReport, MemoryStream ms, StreamWriter writer) { ... }

11
ユニットテストを(並列ではなく)逐次実行
私が作成したWCFホスト管理エンジンを単体テストしようとしています。エンジンは基本的に、構成に基づいてオンザフライでServiceHostインスタンスを作成します。これにより、新しいサービスが追加されたり古いサービスが削除されたりするたびに、すべてのサービスを停止して再起動することなく、利用可能なサービスを動的に再構成できます。 ただし、ServiceHostの動作方法が原因で、このホスト管理エンジンの単体テストで問題が発生しました。特定のエンドポイントに対してServiceHostがすでに作成され、開かれ、まだ閉じられていない場合、同じエンドポイントの別のServiceHostを作成できず、例外が発生します。最近の単体テストプラットフォームはテストの実行を並列化しているため、このコードを単体テストする効果的な方法はありません。 私はxUnit.NETを使用しましたが、その拡張性のために、テストを逐次実行するように強制する方法を見つけることができると期待していました。しかし、私には運がありませんでした。SOの誰かが同様の問題に遭遇し、単体テストをシリアルに実行する方法を知っていることを願っています。 注:ServiceHostは、Microsoftによって作成されたWCFクラスです。私はその行動を変える能力がありません。各サービスエンドポイントを1回だけホストすることも適切な動作ですが、単体テストには特に役立ちません。

6
ASP.NETCoreでのIPrincipalのモック
単体テストを作成しているASP.NETMVCCoreアプリケーションがあります。アクションメソッドの1つは、一部の機能にユーザー名を使用します。 SettingsViewModel svm = _context.MySettings(User.Identity.Name); これは明らかにユニットテストで失敗します。私は周りを見回しましたが、すべての提案は.NET4.5からモックHttpContextまでです。それを行うためのより良い方法があると確信しています。IPrincipalを注入しようとしましたが、エラーが発生しました。そして私もこれを試しました(必死になって、私は推測します): public IActionResult Index(IPrincipal principal = null) { IPrincipal user = principal ?? User; SettingsViewModel svm = _context.MySettings(user.Identity.Name); return View(svm); } しかし、これもエラーをスローしました。ドキュメントにも何も見つかりませんでした...

1
失敗した.NET単体テストをPowerShellスクリプトまたは.NETから再実行する
Azure DevopsのVisual Studio Testタスクには、非常に優れた機能があり、失敗した単体テストを再試行できます。これは、テスト時間が長く、不安定なテストがいくつかある場合に優れた機能です。Azure Devopsのこのテストタスクは、xUnit、NUnit、MSTestなどのさまざまなテストプラットフォームで機能します。(したがって、.NET用に書かれたテスト) スクリプトから同じ動作を取得することは可能ですか?私はxUnitまたはNUnitを好み、PowerShellでスクリプトを実行します。 xUnitの場合-method "name": 指定されたテストメソッドを実行します(完全に指定することも、ワイルドカードを使用することもできます(例: 'MyNamespace.MyClass.MyTestMethod'または '* .MyTestMethod')。複数回指定した場合、OR操作として機能します。 NUnitには--where=EXPRESSION構文ソースがあります。 実行するテストを示す式。演算子==、!=、=〜および!〜を使用して実際の値と比較するテスト名、クラス、メソッド、カテゴリ、またはプロパティを指定できます。構文の詳細については、テスト選択言語を参照してください。 しかし、xUnitまたはNUnitの失敗したテストを収集してすべてを機能させる方法はわかりません。 もちろん、不安定なテストを修正する方が良いでしょうが、それは時々それほど簡単ではありません。 更新:から実行しています。NET / C#(PowerShellでトリガーされる可能性があります)も許容されます
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.