NUnitフレームワーク(最近は完璧なTestNGとJavaから移行)でしばらくの間苦労しました。私は一つのことを達成しようとしています:コードを一度だけのすべての私のテストを実行する前に初期化し、コードの別の部分を初期化するたびにテストが始まります。最初のタスクでは、私は[OneTimeSetUp]
属性を使用していて、2番目のタスクは[SetUp]
です。すべてが完璧に動作するはずですが、実行時に私の[SetUp]
メソッドはオブジェクトへのNullReferenceException
のために失敗します。これは[OneTimeSetUp]
属性メソッドで作成されていると考えられます。興味深いことに、デバッグモードでは、ブレークポイントがなくてもうまくいっています。テストは正常に開始されます。 、テストが失敗した私は、コードのIJavaScriptExecutor jse = ((IJavaScriptExecutor)driver)
行を呼び出すたびNUnit v 3.5とVisual Studio Enterprise 2015 v 4.6.01055ユニットテストは実行中に失敗しますが、デバッグモードでは成功します。
[SetUp]
public void taskBeforeEachTests()
{
IJavaScriptExecutor jse = ((IJavaScriptExecutor)driver);
jse.ExecuteScript("window.open();");
}
だから問題は次のとおりです。その後、私は開かれたChromeブラウザで新しいタブを開きたい
[OneTimeSetUp]
public void taskBeforeAllTests()
{
IWebDriver driver = new ChromeDriver("PathToChromeExecutable");
driver.navigate().GoToURL("http://www.google.com");
}
:以下の私のコードスニペットをご覧ください。ドライバオブジェクトでNullReferenceException。 VSのエキスパートと私が前にこのような状況に直面した人に私の質問。 VS設定/オプションで設定する必要はありますか?私の見ているところでは、私のコードはデバッグモードでは正常に動作するので、Visual Studio自体で調整が必要な場合があります。ありがとう!
デバッグモードでは "ローカル変数"が表示され、実行時にはそれを認識できません。 – President
さらにコードを書くのは難しいですが、あなたのワンタイム設定の "ドライバ"はセットアップのものと同じではないことは間違いありません - あなたが投稿したコードが実行しているコードと同一である。 – Charlie
論理的に考えると、はい、あなたは正しいです。これは単に、OneTimeSetUpのドライバオブジェクトがSetUpで同じではないことを意味します。しかし、最初の問題は、デバッグモードが最初のオブジェクトをどのように見て、それをさらにコードを実行するために使用するのかです。デバッグコードの実行とVisual Studio IDEでの実行の違いを調べる必要があるかもしれません。 – President