Spockテストが失敗したときに何らかのアクションを実行したいと思います。具体的には、スクリーンショットを撮る。出来ますか?どうやってするの?Spockテストが失敗したときに何らかのアクションを実行します
答えて
その後、各スペック
class GlobalSpecExtension implements IGlobalExtension {
@Override
void visitSpec(SpecInfo specInfo) {
specInfo.addListener(new ExampleListener())
}
}
のために実行される
IGlobalExtension
の実装を使用して各仕様に追加
class ExampleListener extends AbstractRunListener {
def void error(ErrorInfo error) {
println "Actual on error logic"
}
}
をリスナクラスを作成します。
IGlobalExtension
実装のフルネームで、最終的ににファイルorg.spockframework.runtime.extension.IGlobalExtension
を作成します(通常Mavenを使用している場合はsrc/test/resources
になります)。
com.example.tests.GlobalSpecExtension
これを実現する最善の方法は、AbstractRunListener
を実装して登録する(グローバルまたはアノテーション駆動の)Spock拡張を書き込むことです。たとえば、OptimizeRunOrderExtensionを参照してください。グローバルエクステンションを登録する方法については、IGlobalExtension記述子を参照してください。
APIがまだ変更される可能性があるため、拡張機能に関するドキュメントはあまりありません。それを安全に再生したい場合(そしていくつかの制限があります)、代わりにJUnit Ruleを実装することができます。
両方の場合に発生する可能性がある1つの問題は、現在の仕様インスタンスへのアクセスを提供しないことです。これが必要な場合は、AbstractRunListener
(失敗の通知を受ける)とIMethodInterceptor
(スペックインスタンスを取得する)の両方を使用する必要があります。どちらも同じ拡張子で登録されています。 (このハード、それが現在何だすべきではない。)
こんにちは!壊れたドライバインスタンスを無効にしたり再作成したりするために、これらの2つを組み合わせるにはどうしたらいいですか?クラウドテストで、 'WebDriverException:Session [...]のようなものがTIMEOUTによって終了した場合、リスナーでエラーを傍受してログに記録できますが、' driver'やドライバファクトリにはアクセスできません私はそれを無効にすることができます。何か案は? – kriegaex
私は、このようにそれを行うことができた:各テストケース「成功」は、セットアップ()メソッドでfalseに設定されている
class ExampleTest extends GebSpec{
static boolean success = false
def setup(){
success = false
}
def cleanup(){
assert success == true, someAction()
}
def someAction(){
}
def "TestCase"(){
expect:
/*What you expect here*/
(success = true) != null
}
}
前に。 各テストケースの最後に "(success = true)!= null"ステートメントを追加します。したがって、「成功」は、テストケースが合格した場合にのみ真となります。 各テストケースの後で、cleanup()メソッドは "成功"が真であるかどうかを検証します。それがメソッドでない場合、someAction()が呼び出されます。
私はuser3074543の回答をupvoteやコメントにすることはできませんが、拡張機能を作成するより簡単です。私は簡単にしたい。だから私はユーザーの*を少し短縮しました(私は1行の方法を意味するものではありません)。成功の代わりに失敗を記録することでロジックを簡単にし、done()ヘルパーでタイピングを減らすことができます。
class Test extends spock.lang.Specification {
def fail
def setup(){ fail = true }
def done(){ !(fail = false) }
def cleanup(){ fail && doStuffWhenFail() }
def 'test things'(){
expect:
stuff
done()
}
}
- 1. CruiseControlから実行したときにTimeoutExceptionでWATINテストが失敗する
- 2. 失敗したテストと未実行のテストの再実行
- 3. チームシティからのテストの実行中にSetUpメソッドが失敗しました
- 4. コマンドラインから実行したときにSeleniumテスト(C#で)が失敗しました。
- 5. MavenでのTestNGテストの実行に失敗しました
- 6. mssql_executeが失敗しました。 "ストアドプロシージャの実行に失敗しました"
- 7. 実行が失敗しました。java.util.NoSuchElementException
- 8. Robolectric:複数のテストを実行すると失敗します
- 9. エラー:タスク ':app:transformClassesWithDexForDebug'の実行に失敗しました。何らかの理由で
- 10. Jenkinsfileで失敗したビルドのアクションを実行する方法
- 11. プロパティベースのテストは、失敗すると予想したときに引き続き実行します。
- 12. イオン実行アンドロイド: 実行がタスクに失敗しました「:CordovaLib:processDebugResources」例外何が悪かったのか
- 13. antで実行してもテストは成功しますが、Mavenで実行すると失敗しますか?
- 14. テストが失敗したときのnunitテスト結果の生成
- 15. テストに失敗した場合、私の統合テストの結果に後処理を実行できますか?
- 16. アクセスプロジェクト(ADP)マクロのOpenStoredProcedureアクションでアクションが失敗しました
- 17. 失敗したテストのみを実行するMaven 'test'コマンド
- 18. 失敗したTestNGテストのプログラムによる再実行
- 19. テストが失敗したときにこのRubyコードが実行されるのはなぜですか?
- 20. テストが失敗したときにMavenゴールを実行するにはどうすればよいですか?
- 21. NunitテストDLLは、別々に実行して実行します。第2のテストは失敗します。
- 22. 失敗した実行nativescript -
- 23. ルビで失敗した単体テストを再実行する
- 24. 7zアーカイブからの抽出がコマンドラインで実行されたときに失敗しました
- 25. VS2012:以前に失敗したテストを再実行すると、テストエクスプローラでテスト結果をクリアします
- 26. Rspecテストに失敗しました
- 27. MSTest ExpectedExceptionテストに失敗しました
- 28. Windows Phoneテストに失敗しました
- 29. XCTest - "テストに失敗しました"
- 30. j2meエラーコード1、CLDC実行で実行に失敗しました
servicesディレクトリにパッケージ名を含むファイルを作成することの合理的な背景は何ですか? – eddyrokr