Como usar o nUnit Testes no WinRT aplicação?
-
13-12-2019 - |
Pergunta
Eu não sei como usar o nUnit no WinRT aplicações(metro).Eu escrevo esse código e execute o teste (usando o Resharper test runner).O teste foi passado.Por quê?
using System.Threading.Tasks;
using NUnit.Framework;
namespace UnitTestInWinRT
{
[TestFixture]
public class NUnitClassTest
{
[Test]
public void TestnUnitAsyncTest()
{
var number = GetNumberAsync(7);
number.ContinueWith(n => Assert.AreEqual("string is 6", n.Result));
}
public Task<string> GetNumberAsync(int n)
{
return Task.Run(() => "string is " + n);
}
}
}
Solução
O problema é:
Você usa ContinueWith o método.
Ceates uma continuação que é executado de forma assíncrona, quando o alvo Tarefa é concluída.
Assim, o NUnit executa o seu lamba em outro thread, e termina método de ensaio. AssertionExcecption
ocorra em outro thread, que é por isso que o teste é passado.
Se você tiver executado no mesmo thread, o teste irá falhar como esperado.
[TestFixture]
public class NUnitClassTest
{
[Test]
public void TestnUnitAsyncTest()
{
var number = GetNumberAsync(7);
number.Wait();
Assert.AreEqual("string is 6", number.Result);
}
public Task<string> GetNumberAsync(int n)
{
return Task.Run(() => "string is " + n);
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow