Executar testes NUnit do WebDriver em vários drivers
Recentemente, começamos a usar o WebDriver (em favor do Selenium 1) para realizar testes de navegador, usando o framework NUnit. Como queremos executar os testes em vários navegadores, definimos drivers para cada um e os colocamos em uma lista durante a configuração do equipamento:
[TestFixtureSetUp]
public void SetupTest()
{
// Load drivers
Drivers = new List<IWebDriver>
{
new ChromeDriver(),
...
};
Em todos os testes, fazemos uma iteração na lista como esta:
[Test]
public void SomeTest()
{
foreach (var driver in Drivers)
{
driver.Navigate().GoToUrl("...");
...
Parece errado fazer isso em todos os métodos de teste. Os métodos de teste não devem se preocupar com qual driver eles devem trabalhar. Idealmente, teríamos algo assim:
public void SomeTest(IWebDriver driver)
{
driver.Navigate().GoToUrl("...");
...
Uma maneira de resolver isso é usando TestCases:
[TestCase(new ChromeDriver())]
[TestCase(new FireFoxDriver())]
...
Mas isso é muita duplicação e transfere o problema da inicialização correta dos drivers para os atributos de cada um dos testes. Não é realmente um ganho.
Existe alguma maneira de o framework NUnit ser capaz de executar todo o conjunto de testes e injetar um parâmetro diferente para os testes individuais em cada execução? Ou existe alguma outra boa solução para isso?