我想用硒來運行測試;似乎沒有一種好方法可以在多個瀏覽器上運行同一組單元測試。如何創建一個在c#中轉發方法調用的代理對象?
我看到這篇文章關於並行運行測試: http://slmoloch.blogspot.com/2009/12/design-of-selenium-tests-for-aspnet_19.html
不過,我使用Visual Studio單元測試框架。
我可以創建一個代理類是這樣的:
public class SeleniumProxy {
private List<DefaultSelenium> targets;
public SeleniumProxy() {
targets = new List<DefaultSelenium>();
targets.Add(new DefaultSelenium(... "firefox"...));
targets.Add(new DefaultSelenium(... "iexplore"...));
}
public void Open(String url) {
foreach (var i in targets) {
i.Open(url);
}
}
...
}
我的問題是這樣嗎?我怎樣才能做到這一點,而不必將整個班級改寫爲代理?
我想也許會傳遞一個lamda來映射參數,或者傳遞一個函數來接受要調用的方法的名字,但是這些都看起來像是非常蹩腳的想法。
我真正想要的是添加成員,如:
public class SeleniumProxy {
public dynamic proxy;
....
}
並調用此類似:
var selenium = getProxy();
selenium.proxy.Open("...");
是否C#允許這種語法的動態對象?
或某種類的元處理程序,讓他們捕捉這種方法的異常並手動處理它們?
基本上: 如何創建一個代理對象來動態調用類的內部成員上的方法?
(編輯:也許...使用DefaultSelenium物體上反射和每個條目的動態代理對象上創建功能存根..)
如果我是你,我會再次看看Selenium Grid,它非常先進。根據我的經驗,IE Selenium測試需要FF和FF一樣長,因此如果您嘗試以並行方式運行測試,FF測試也將持續進行。 – artbristol 2011-06-13 09:01:40
如果需要更長時間,這並不重要;無論如何,你必須等待IE瀏覽器。 – Doug 2011-06-13 12:16:52