O NUnit possui um recurso chamado Valores, como abaixo:
[Test]
public void MyTest(
[Values(1,2,3)] int x,
[Values("A","B")] string s)
{
// ...
}
Isso significa que o método de teste será executado 6 vezes:
MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
Estamos usando o MSTest agora, existe algum equivalente para isso, para que eu possa executar o mesmo teste com vários parâmetros?
[TestMethod]
public void Mytest()
{
// ...
}
Respostas:
Infelizmente, ele não é suportado no MSTest. Aparentemente, existe um modelo de extensibilidade e você pode implementá-lo . Outra opção seria usar testes orientados a dados .
Minha opinião pessoal seria apenas ficar com o NUnit ...
Edição: a partir do Visual Studio 2012, atualização 1, o MSTest tem um recurso semelhante. Veja a resposta de @ McAden abaixo.
fonte
EDIT 4 : Parece que isso foi concluído no MSTest V2 17 de junho de 2016: https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/06/17/taking-the-mstest-framework-forward-with-mstest- v2 /
Resposta original :
Há cerca de uma semana, no Visual Studio 2012 Update 1, algo semelhante agora é possível:
EDIT : Parece que isso só está disponível no projeto de teste de unidade do WinRT / Metro . Vadio
EDIT 2 : A seguir, os metadados encontrados usando "Ir para a definição" no Visual Studio:
EDIT 3 : Esse problema foi levantado nos fóruns do UserVoice do Visual Studio. Estados da última atualização:
https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/3865310-allow-use-of-datatestmethod-datarow-in-all-unit
fonte
Esse recurso está em pré-lançamento agora e funciona com o VS 2015.
Por exemplo:
fonte
Como ninguém mencionou - não exatamente o mesmo que os atributos de NUnit
Value
(ouTestCase
), mas o MSTest temDataSource
atributo, o que permite que você faça coisas semelhantes. Você pode conectá-lo ao banco de dados ou arquivo XML - não tão direto quanto o recurso do NUnit, mas faz o trabalho.fonte
MSTest tem um atributo poderoso chamado DataSource . Com isso, você pode executar um teste controlado por dados conforme solicitado. Você pode ter seus dados de teste em XML, CSV ou em um banco de dados. Aqui estão alguns links que o guiarão
http://visualstudiomagazine.com/articles/2009/09/15/unit-testing-with-vsts2008-part-3.aspx http://msdn.microsoft.com/en-us/library/ms182527.aspx
http: //msdn.microsoft.com/en-us/library/ms243192.aspx
Espero que isso ajude você.
fonte
É muito simples de implementar - você deve usar
TestContext
property eTestPropertyAttribute
.Exemplo
EDITAR:
Eu preparei alguns métodos de extensão para simplificar o acesso à
TestContext
propriedade e agir como se tivéssemos vários casos de teste. Veja o exemplo com o processamento de propriedades simples de teste aqui:e exemplo com a criação de objetos de teste complexos:
Dê uma olhada nos métodos de extensão e no conjunto de amostras para obter mais detalhes.
fonte
Há, é claro, outra maneira de fazer isso que não foi discutida neste segmento, ou seja, por herança da classe que contém o TestMethod. No exemplo a seguir, apenas um TestMethod foi definido, mas dois casos de teste foram feitos.
No Visual Studio 2012, ele cria dois testes no TestExplorer:
DemoTest_A12_B4.test
fonte
O MsTest não suporta esse recurso, mas você pode implementar seu próprio atributo para conseguir isso. dê uma olhada no abaixo:
http://blog.drorhelper.com/2011/09/enabling-parameterized-tests-in-mstest.html
fonte
Não consegui fazer com que o A
DataRowAttribute
funcionasse no Visual Studio 2015, foi com isso que acabei:A solução real aqui é usar apenas o NUnit (a menos que você esteja preso no MSTest como eu estou neste caso específico).
fonte