[解決済み] NUnitに似たxUnit.netのテストパラメータライゼーション
2022-08-12 17:55:28
質問
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"}, // round
}
これでNUnitのGUIに8つのテストが生成されます。
[TestCase((string)null, Result = "1")]
[TestCase("", Result = "1")]
[TestCase(" ", Result = "1")]
[TestCase("1", Result = "2")]
[TestCase(" 1 ", Result = "2")]
public string IncrementDocNumber(string lastNum) { return "some"; }
これは 5 つの別々のテストを生成し、その結果を自動的に比較します (
Assert.Equal()
).
[Test]
public void StateTest(
[Values(1, 10)]
int input,
[Values(State.Initial, State.Rejected, State.Stopped)]
DocumentType docType
){}
これで6つの組合せテストが生成されます。貴重なものです。
数年前、私はxUnitを試してみて、それが大好きでしたが、これらの機能が欠けていました。これなしでは生きていけないのです。何か変わったのでしょうか?
どのように解決するのですか?
xUnit を実行する方法を提供します。 パラメータ化されたテスト というものを使って データ理論 . このコンセプトはNUnitにあるものと同等ですが、箱から出して得られる機能はそれほど完全ではありません。
以下はその例です。
[Theory]
[InlineData("Foo")]
[InlineData(9)]
[InlineData(true)]
public void Should_be_assigned_different_values(object value)
{
Assert.NotNull(value);
}
この例では、xUnit は
Should_format_the_currency_value_correctly
に対して一度だけテストを実行します。
InlineDataAttribute
に対して一度だけテストを行い、その都度指定された値を引数として渡します。
データセオリーは 拡張性ポイント であり、パラメータ化されたテストを実行するための新しい方法を作成するために使用することができます。これを実現する方法は 新しい属性を作成することです。 を作成し、テストメソッドの引数や返り値を調べ、オプションでそれを操作することです。
xUnit のデータ理論がどのように拡張できるのか、その実用的な例として AutoFixture 's 自動データ と InlineAutoData の理論に基づいています。
関連
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】C#で四捨五入する方法
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] TDDのためのJavaScriptユニットテストツール
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] 複素数パラメータを[理論]に渡す