Я пытаюсь использовать селен для запуска тестов; Похоже, что нет хорошего способа запустить один и тот же набор модульных тестов в нескольких браузерах.
Я прочитал этот пост о параллельном запуске тестов:
http://slmoloch.blogspot.com/2009/12/design-of-selenium-tests-for-aspnet_19.html
Однако я использую фреймворк для визуального студийного тестирования.
Я могу создать прокси-класс следующим образом:
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);
}
}
...
}
Мой вопрос такой? Как я могу сделать это без необходимости переписывать весь класс как прокси?
Я подумал, может быть, передавая лямду для отображения аргументов, или передавая функцию, которая принимает имя вызываемого метода, но все они кажутся довольно неубедительными идеями.
Что я действительно хочу, так это добавить члена как:
public class SeleniumProxy {
public dynamic proxy;
....
}
И вызвать это как:
var selenium = getProxy();
selenium.proxy.Open("...");
Разрешает ли c # такой синтаксис для динамических объектов?
Или какой-нибудь мета-обработчик для классов, который позволяет им перехватывать исключения, не связанные с такими методами, и обрабатывать их вручную?
В основном:
Как я могу создать прокси-объект, который динамически вызывает методы для внутреннего члена класса?
(Изменить: возможно ... используя отражение в объекте DefaultSelenium и создавая функциональные заглушки в динамическом прокси-объекте для каждой записи ..?)