0
私はSelenium Webdriverに簡単な拡張ライブラリを作成しています。私は次のようにイベントのデリゲートを定義する私の「ラッパー」クラスWebDriverManager
持っている:私のターゲットプロジェクトでC#カスタムイベントが発生しない
public delegate void OnStartEventHandler();
public delegate void OnTerminateEventHandler();
public delegate void OnCheckpointEventHandler();
public event OnStartEventHandler OnStartTesting;
public event OnTerminateEventHandler OnTerminateTesting;
public event OnCheckpointEventHandler OnCheckpointTesting;
/// <summary>
/// Method that should be fired inside method with [OneTimeSetUp] attribute
/// </summary>
public void OnStart() { if (OnStartTesting != null) OnStartTesting(); }
/// <summary>
/// Method that should be fired inside method with [OneTimeTearDown] attribute
/// </summary>
public void OnTerminate() { if (OnTerminateTesting != null) OnTerminateTesting(); }
/// <summary>
/// Method that should be fired inside method with either [SetUp] or [TearDown] attribute
/// </summary>
public void OnCheckpoint() { if (OnCheckpointTesting != null) OnCheckpointTesting(); }
を私はWebDriverManager
クラスを含むライブラリへの参照を追加し、簡単な方法で記述します。
[OneTimeSetUp]
public void SetUp()
{
// wdmChrome and wdmFirefox are instances of WebDriverManager
wdmChrome.OnStartTesting +=() => { Console.WriteLine("Starting testing Chrome browser"); };
wdmFirefox.OnStartTesting +=() => { Console.WriteLine("Starting testing Firefox browser"); };
wdmChrome.OnTerminateTesting +=() => { Console.WriteLine("Terminating test of Chrome browser"); };
wdmFirefox.OnTerminateTesting +=() => { Console.WriteLine("Terminating test of Firefox browser"); };
wdmChrome.OnStart();
wdmFirefox.OnStart();
// other stuff that initializes webdriver
}
[OneTimeTearDown]
public void TearDown()
{
wdmChrome.OnTerminate();
wdmFirefox.OnTerminate();
wdmChrome.WebDriver.Close();
wdmFirefox.WebDriver.Close();
}
テスト正しく発射されてパスしますが、「出力」には代理人からのメッセージはありません。私はまたOnStart()
のボディーをOnStartTesting?.Invoke()
に変更しようとしましたが、結果は変わりませんでした。どうしたの?
可能性のある複製http://stackoverflow.com/questions/4884043/how-to-write-to-console-out-during-execution-of-an-mstest-test –
また、Visual StudioのアドバイスOnStartTesting?.Invoke()を使用して、イベント登録と呼び出しの競合状態を回避します。 –
あなたの答えをありがとう。残念ながら、Andras Zoltanによって提案された答えはうまくいかなかった。 –