Acho o TestCase
recurso do NUnit bastante útil como uma maneira rápida de especificar parâmetros de teste sem a necessidade de um método separado para cada teste. Existe algo semelhante no MSTest?
[TestFixture]
public class StringFormatUtilsTest
{
[TestCase("tttt", "")]
[TestCase("", "")]
[TestCase("t3a4b5", "345")]
[TestCase("3&5*", "35")]
[TestCase("123", "123")]
public void StripNonNumeric(string before, string expected)
{
string actual = FormatUtils.StripNonNumeric(before);
Assert.AreEqual(expected, actual);
}
}
DataRow()
, consulte: blogs.msdn.microsoft.com/devops/2016/06/17/…Respostas:
A Microsoft anunciou recentemente o "MSTest V2" (consulte o artigo do blog ). Isso permite que você use consistentemente (desktop, UWP, ...) o
DataRow
atributo -attribute!Novamente, o Test Explorer do Visual Studio Express infelizmente não reconhece esses testes. Mas pelo menos as versões "completas" do VS agora suportam esse recurso!
Para usá-lo, basta instalar os pacotes NuGet MSTest.TestFramework e MSTest.TestAdapter (ambos de pré-lançamento a partir de agora).
Resposta mais antiga:
Se não tiver que ficar com o MSTest e você estiver usando-o apenas para poder executar os testes por meio do Test Explorer
porque você só tem uma edição Visual Studio Express, então esta pode ser uma solução para você:Existe a extensão VsTestAdapter VSIX para ser capaz de executar testes NUnit via Test Explorer. Infelizmente, os usuários do VS Express não podem instalar extensões ... Mas, felizmente, o VsTestAdapter também vem com um pacote NuGet simples !
Portanto, se você for um usuário do VS Express, basta instalar o pacote NuGet do VsTestAdapter e desfrutar da execução de seus testes / casos de teste NUnit através do Test Explorer!Infelizmente, a afirmação acima não é verdadeira. Embora seja perfeitamente possível instalar o pacote por meio de uma edição Express, é inútil, pois não pode utilizar o Test Explorer. Anteriormente, havia uma observação sobre uma versão mais antiga do TestAdapter, que foi removida da página de descrição do 2.0.0 :
fonte
Eu sei que esta é uma resposta tardia, mas espero que ajude outras pessoas.
Procurei por toda parte uma solução elegante e acabei escrevendo uma para mim. Nós o usamos em mais de 20 projetos com milhares de testes de unidade e centenas de milhares de iterações. Nunca perdeu uma batida.
https://github.com/Thwaitesy/MSTestHacks
1) Instale o pacote NuGet .
2) Herdar sua classe de teste do TestBase
3) Crie uma propriedade, campo ou método que retorna IEnumerable
4) Adicione o atributo MSTest DataSource ao seu método de teste, apontando de volta para o nome IEnumerable acima. Isso precisa ser totalmente qualificado.
Resultado final: 3 iterações como o DataSource normal :)
fonte
Eu sei que esta é outra resposta tardia, mas em minha equipe que está presa ao uso da estrutura de teste do MS, desenvolvemos uma técnica que depende apenas de tipos anônimos para manter uma matriz de dados de teste e LINQ para percorrer e testar cada linha. Não requer classes ou estruturas adicionais e tende a ser bastante fácil de ler e entender. Também é muito mais fácil de implementar do que os testes orientados a dados usando arquivos externos ou um banco de dados conectado.
Por exemplo, digamos que você tenha um método de extensão como este:
Você poderia usar uma matriz de Tipos Anônimos combinados com LINQ para escrever testes como este:
Ao usar essa técnica, é útil usar uma mensagem formatada que inclui os dados de entrada no Assert para ajudá-lo a identificar qual linha faz com que o teste falhe.
Eu escrevi sobre esta solução com mais informações e detalhes em AgileCoder.net .
fonte
Khlr deu boas explicações detalhadas e aparentemente essa abordagem começou a funcionar no VS2015 Express for Desktop. Tentei deixar o comentário, mas minha falta de reputação não me permitiu fazê-lo.
Deixe-me copiar a solução aqui:
Para usá-lo, basta instalar os pacotes NuGet MSTest.TestFramework e MSTest.TestAdapter .
Um problema é
Portanto, remova Microsoft.VisualStudio.QualityTools.UnitTestFramework das referências do projeto.
Você é muito bem-vindo para editar a resposta original e excluir esta.
fonte
O MSTest tem o atributo DataSource, que permitirá que você alimente uma tabela de banco de dados, csv, xml, etc. Eu usei e funciona bem. Não sei como colocar os dados logo acima como atributos como na sua pergunta, mas é muito fácil configurar as fontes de dados externas e os arquivos podem ser incluídos no projeto. Estava funcionando há uma hora desde o início e não sou um especialista em testes automatizados.
https://msdn.microsoft.com/en-us/library/ms182527.aspx?f=255&MSPPError=-2147217396 tem um tutorial completo baseado na entrada do banco de dados.
http://www.rhyous.com/2015/05/11/row-tests-or-paramerterized-tests-mstest-xml/ tem um tutorial baseado na entrada de arquivo XML.
fonte