NAnt、MbUnit、CruiseControl、Selenium-設定をテストアセンブリに渡す
-
04-07-2019 - |
質問
自動テストプラットフォームのアイデアをまとめており、テストランナーのSeleniumを検討しています。
記録されたSelenium C#スクリプトをMbUnitテストでラップしています。これはMbUnit NAntタスクを介してトリガーされています。 Seleniumテストクライアントは次のように作成されます。
selenium = new DefaultSelenium("host", 4444, "*iexplore", "http://[url]/");
ホスト、ポート、およびURLの設定をテストに渡して、それらの値をNAntタスクを介して制御できるようにするにはどうすればよいですか?
たとえば、複数のSelenium RCサーバーがリッスンしていて、テスト自体に設定を埋め込むのではなく、各サーバーアドレスで同じテストコードを渡したい場合があります。
私が書いたカスタムNAntタスクを使用してモックアップされたアプローチがありますが、現時点ではそれは最もエレガントなソリューションではなく、私がやりたいことを達成するためのより簡単な方法があるかどうか疑問に思いました。
誰か助けてくれてありがとう。
解決
これまでの回答に感謝します。
環境変数は機能しますが、単一のテストアセンブリを介して並列テストを実行できるため、実行中に設定が上書きされないようにして、別のテストが中断される可能性があります。興味深い考えがありますが、他の分野でも使用できると思います。
現在のソリューションには、MbUnitタスクの上にビルドされたカスタムNAntタスクが含まれます。これにより、追加のホスト、ポート、URL設定を属性として指定できます。これらはビルドディレクトリ内の構成ファイルとして保存され、テストアセンブリによって読み込まれます。これは少し「不格好」だと感じます。テストは特定のクラスから継承する必要があるので、私にとっては。それほど悪くはありませんが、依存関係を減らしてテストに集中したいと思います。
たぶん心配しすぎです!!
他のヒント
すべてのテストフィクスチャの基本クラスがあり、次のセットアップコードがあります:
[FixtureSetUp]
public virtual void TestFixtureSetup ()
{
BrowserType = (BrowserType) Enum.Parse (typeof (BrowserType),
System.Configuration.ConfigurationManager.AppSettings["BrowserType"],
true);
testMachine = System.Configuration.ConfigurationManager.AppSettings["TestMachine"];
seleniumPort = int.Parse (System.Configuration.ConfigurationManager.AppSettings["SeleniumPort"],
System.Globalization.CultureInfo.InvariantCulture);
seleniumSpeed = System.Configuration.ConfigurationManager.AppSettings["SeleniumSpeed"];
browserUrl = System.Configuration.ConfigurationManager.AppSettings["BrowserUrl"];
targetUrl = new Uri (System.Configuration.ConfigurationManager.AppSettings["TargetUrl"]);
string browserExe;
switch (BrowserType)
{
case BrowserType.InternetExplorer:
browserExe = "*iexplore";
break;
case BrowserType.Firefox:
browserExe = "*firefox";
break;
default:
throw new NotSupportedException ();
}
selenium = new DefaultSelenium (testMachine, seleniumPort, browserExe, browserUrl);
selenium.Start ();
System.Console.WriteLine ("Started Selenium session (browser type={0})",
browserType);
// sets the speed of execution of GUI commands
if (false == String.IsNullOrEmpty (seleniumSpeed))
selenium.SetSpeed (seleniumSpeed);
}
次に、テストランナーに設定を提供します。ファイル:
MSBuildでは、環境変数を使用して、CC.NET構成で環境変数を作成すると、スクリプトで使用できるようになります。これはあなたにも役立つと思います。
NAntを使用して外部エンティティと統合する必要があるときはいつでも、実行タスクを使用するか、カスタムタスクを作成します。あなたが投稿した情報を考えると、あなた自身のものを書くことは確かに良い解決策であるように思えますが、あなたはそれに満足していないと述べています。現在のソリューションがエレガントであると思わない理由について少し詳しく説明してください。
更新
内部の詳細がわからない場合、カスタムタスクでかなりうまく解決できたようです。私が聞いたことから、それは私がそれをやったであろう方法です。
新しいソリューションがやがて登場するかもしれませんが、今のところは自分に光を当ててください!