Uruchom testy WebDriver NUnit na wielu sterownikach
Niedawno zaczęliśmy używać WebDriver (na korzyść Selenium 1) do przeprowadzania testów przeglądarki przy użyciu struktury NUnit. Ponieważ chcemy uruchomić testy w różnych przeglądarkach, definiujemy sterowniki dla każdego z nich i umieszczamy je na liście podczas konfiguracji urządzeń:
[TestFixtureSetUp]
public void SetupTest()
{
// Load drivers
Drivers = new List<IWebDriver>
{
new ChromeDriver(),
...
};
W każdym pojedynczym teście przeglądamy listę w następujący sposób:
[Test]
public void SomeTest()
{
foreach (var driver in Drivers)
{
driver.Navigate().GoToUrl("...");
...
Źle jest robić to we wszystkich metodach testowych. Metody testowe nie powinny dotyczyć tego, na jakim sterowniku powinny pracować. Idealnie byłoby, gdybyśmy mieli coś takiego:
public void SomeTest(IWebDriver driver)
{
driver.Navigate().GoToUrl("...");
...
Jednym ze sposobów rozwiązania tego problemu jest użycie TestCases:
[TestCase(new ChromeDriver())]
[TestCase(new FireFoxDriver())]
...
Jest to jednak dużo powielania i przesuwa problem prawidłowej inicjalizacji sterowników w atrybuty każdego pojedynczego testu. Naprawdę nie zysk.
Czy można w jakiś sposób nakazać, aby struktura NUnit wykonała cały zestaw testów i wstrzyknęła inny parametr do poszczególnych testów w każdym cyklu? Czy może jest w tym jakieś inne dobre rozwiązanie?