2017-10-24 9 views
-1

実際には、私は実行時の値を取得し、それ以上の実行のために渡す必要があります。順次実行では完全に動作しますが、(ソースラボでは)リモート実行を行うと、その接続点で実行時の値がブラウザ間で入れ替えられ、失敗につながります。 (各ブラウザは別々の値を取得する必要があるため)パラレル実行のランタイム変数をセレンのJavaに格納する方法は?

私にこの光を投げてもらえますか?

ありがとう、Kris。

+0

これまでに試したことはありますか? – loki

+0

私は、値を同期的に返すメソッドをテストするための優先順位を設定することができると思います。 https://www.guru99.com/testcase-priority-testng.html – Pradeep

+0

あなたの返事ありがとうございましたPradeep&Loki ..解決策を得ました。実際には同じテストケースが10のブラウザで実行されます。 IDとそれ以上の実行へのパス、連続した作業はうまくいきますが、並列実行IDの変数が別のものと重なってしまいましたが、失敗しましたが、今はスレッドローカル変数でこれが修正されています – Kris

答えて

0

ありがとうございます!ソリューションはThreadLocal変数の概念と一緒になった

私のフレームワークの環境固有の値のほとんどは、STATICとして定義されています。

Javaでは、静的変数はスレッド間でデータを共有するために使用されます。つまり、変数はスレッド間で同じです。その場合、第2のスレッドが静的変数に値を割り当てると、第1のスレッドによって設定された値が上書きされます。これにより問題が発生します。

上記の問題を克服するために、2つのアプローチが考えられます。

1)javaのすべてのローカル変数はスタックメモリに格納され、各スレッドには独自のスタックがあります。したがって、変数をローカル変数に変更すると、問題が解決されます。

2)既存のフレームワークで上記のアプローチを使用すると、依存関係の多くが壊れます。そして、変数をローカルに作ることは常に容易ではありません。だから私たちはより良い解決策を探す必要があります。このような状況では、JavaにThreadLocal変数があります。

http://learn-testing-urself.blogspot.in/2015/05/importance-of-threadlocal-in-parallel.html

関連する問題