2016-04-19 11 views
0

は、私は失敗したテストを再実行するためにC#のコードの下に使用:3.2でnunitテストをプログラムで再実行するにはどうすればよいですか? NUnitの2.6.4で

TestExecutionContext.CurrentContext.CurrentTest.Run(new NullListener(), TestFilter.Empty); 

をしかし、3.2をNUnitのためにアップグレードした後、TestExecutionContext.CurrentContext.CurrentTestはnullを返します。 3.2でテストを再実行するにはどうすればよいですか?

答えて

0

私は、これはNUnitの3.xの中で行うことができるかを考えることができる唯一の方法は、障害を引き起こす可能性がありますテストコードをラップしている....

using NUnit.Framework.Internal; 
using NUnit.Framework.Internal.Commands; 
using NUnit.Framework.Internal.Execution; 

TestActionCommand command = new TestActionCommand(CommandBuilder.MakeTestCommand(TestExecutionContext.CurrentContext.CurrentTest as TestMethod)); 
command.Execute(TestExecutionContext.CurrentContext); 
+0

これは現在のビルドでは機能しますが、元のソリューションの欠点を共有しています。これは、今後変更される可能性のある内部クラスを使用することです。つまり、少なくともしばらくはかなり安全です。 :-) – Charlie

0

一時的なネットワークエラーなどのためにテストに失敗することがあるため、テストを再実行しようとすると、NUnit 3.xはRetry属性を導入して、指定した回数だけテストを再試行します。

+0

ありがとうございました。設定方法で再試行回数をプログラム的に変更することは可能ですか? – quldude

+0

いいえ、再試行回数は固定された最大値です。あなたの状況に適した番号を決定しようとします。 –

+0

nunit 2.6.4で慣れたように、テストを再実行できる方法はありますか?私がこれをやりたいのは、入力パラメータとして再試行回数があるからです。 – quldude

0

次のようにこれを達成することができましたループ内にtry catchブロックを置くだけで、catchブロック内で継続します。

再試行回数パラメータを渡してループ内でカウントし、最大再試行回数に達するとテストに失敗することがあります。

0

NUnit 2.6.4で行っていたことは、テストを実行するためのサポートされていない方法でした。それは多くの内部クラスを使用することによってのみ機能しました。私は、公開されたAPIを使用し、将来的に任意に変更される内部クラスやメソッドを使用するのではなく、必要な場所で機能を要求することをお勧めします。

+0

APIを使用してこれを行う方法の例を教えてください。 – quldude

+0

ここをクリックしてください:https://github.com/nunit/dev/wiki/Test-Engine-API – Charlie

+0

私はTestEngineを使ってテストを実行しました。これはonetimesetup、setup、test、teardown、onetimeteardの各メソッドを実行します。しかし、セットアップ、テスト、ティアダウンの方法だけを実行する方法はありますか? – quldude

関連する問題