MbUnitにAssert.WarningのMsTestに相当するものがありますか?mstestのassert.warningに相当しますか?
答えて
最も近い一致はAssert.Inconclusive()
です - テストを行わないこのように、も失敗します。それは、という結論外の第3段階に入ります。。
単一の不確定テストでは、テストスイート全体が非決定的になります。
だけでなく、カスタムメッセージをサポートオーバーロードがあります:私はいくつかのプロジェクトのためのNUnitを使用するよう
Assert.Inconclusive("Ploeh");
Annoyingly、Inconclusiveテストでは、MSTEST.EXEが失敗と同じステータスコード(1)を返すのに十分です。バッチファイルを使用してすべてを設定している場合、違いを伝えることはできませんそれ以上の作業はありません。 –
は、私は同様の問題を持っています。ここで
Console.Write("Some Warning");
Assert.Inclusclusive();実際にNUnitによってサポートされています。 http://www.nunit.org/index.php?p=utilityAsserts&r=2.5.8 –
で使用してみてください私のNUnitの(私はこの質問を約MSTESTだったけど、これはあまりにも動作するはずです)との警告を持ってする方法についてをハック。いつものように、私はどんな改善にも興味があります。この方法は私のために働いています。
背景:テスト自体に正しいコメントがないかチェックし、コメントを変更せずに別のテストをコピーして貼り付けたかどうかを検出するロジックがあります。これらは、の警告です。通常のAssertなしで開発者に見せたいと思います。いくつかはテストに重点を置いており、クリーンアップのリファクタリング段階では警告を削除します。
ミッション:他のすべてのアサートが実行された後に警告を表示する。つまり、開発中のテストで通常発生するAssert.Failの後に警告を表示することさえできます。
実装:(すべてのテストファイルのための基本クラスを作成することが最善):
public class BaseTestClass
{
public static StringBuilder Warnings;
[SetUp]
public virtual void Test_SetUp()
{
Warnings = new StringBuilder();
}
[TearDown]
public virtual void Test_TearDown()
{
if (Warnings.Length > 0)
{
string warningMessage = Warnings.ToString();
//-- cleared if there is more than one test running in the session
Warnings = new StringBuilder();
if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
Assert.Fail(warningMessage);
}
else
{
Assert.Inconclusive(warningMessage);
}
}
}
テストの使用
[Test]
public void Sample_Test()
{
if (condition) Warning.AppendLine("Developer warning");
Assert.Fail("This Test Failed!");
}
実際の結果:
"This Test Failed!"
"Developer warning"
テストのステータスが失敗しました - RED
テストに合格し、警告があった場合、ステータスはInconclusive - YELLOWになります。
カスタム例外を使用することができます。
Assert.Inclusclusiveの問題は、テストエクスプローラがテストが実行されていないことを示していることです。テストは、他の開発者によって運営されている場合は特に、将来的にテストを実行しているとき、これは誤解を招く可能性があり、次のように
私が好むようになってきた方法です。まず、カスタムUnitTestWarningException
を定義します。私は私の警告メッセージ文字列を渡すことができるように私に追加のコンストラクタを与えました。あなたの代わりにUnitTestWarningException
を投げ、警告でユニットテストを終了したいポイントで
public class UnitTestWarningException : Exception
{
public UnitTestWarningException(string Message) : base(Message) { }
public UnitTestWarningException(string Format, params object[] Args) : base(string.Format(Format, Args)) { }
}
次に、::フォーマットスタイルの引数を持つ
[TestMethod]
public void TestMethod1()
{
.
.
.
try
{
WorkflowInvoker.Invoke(workflow1, inputDictionary);
}
catch (SqlException ex)
{
if (ex.Errors.Count > 0
&& ex.Errors[0].Procedure == "proc_AVAILABLEPLACEMENTNOTIFICATIONInsert")
{
//Likely to occur if we try to repeat an insert during development/debugging.
//Probably not interested--the mail has already been sent if we got as far as that proc.
throw new UnitTestWarningException("Note: after sending the mail, proc_AVAILABLEPLACEMENTNOTIFICATIONInsert threw an exception. This may be expected depending on test conditions. The exception was: {0}", ex.Message);
}
}
}
結果:試験Explorerが、その後することを示しています
- 1. perrorのC++に相当しますか?
- 2. QtのGtkSpinnerに相当しますか?
- 3. virtualenvのLuaに相当しますか?
- 4. WP7のデータリストに相当しますか?
- 5. TFSのオープンソースに相当しますか?
- 6. RubyのcURLに相当しますか?
- 7. JMockItのtimes()に相当しますか?
- 8. cuBLASのcudaGetErrorStringに相当しますか?
- 9. マイクロフォーマットのDTDに相当しますか?
- 10. QTMovieViewのオーディオに相当しますか?
- 11. ファイルベースのjava.util.concurrent.locks.Lockに相当しますか?
- 12. .NETのGWTに相当しますか?
- 13. Javaのmemcmp()に相当しますか?
- 14. C#のfunc_get_argに相当しますか?
- 15. SprintfはMathematicaに相当しますか?
- 16. SPARQL:SQL UPDATEに相当しますか?
- 17. Passport.jsはPythonに相当しますか?
- 18. Goでsetdefaultに相当しますか?
- 19. DoEventsはC++に相当しますか?
- 20. プライムフェイスはdjangoに相当しますか?
- 21. C#String.Format()PHPに相当しますか?
- 22. Symfony2はbefore_filterに相当しますか?
- 23. setTimeOut cに相当しますか?
- 24. .NETはGetLastInputInfoに相当しますか?
- 25. MappedBytesBuffer for .NETに相当しますか?
- 26. direct_to_templateはメールに相当しますか?
- 27. .NET内のjava.net.URLConnectionに相当します。
- 28. boto3のget_contents_to_fileに相当します。
- 29. EntityDataSourceのe.ReturnValueに相当します。
- 30. Linux上のBBEditに相当します。
良い質問:テストが実行されますが、
UnitTestWarningException
で失敗してきたこと、あなたの警告を示しています。 MSFTは、既存の単体テスト標準を破棄することにしました。 –