c# - Microsoft.Fakes no se ejecutará en contextos de prueba de unidad normales
visual-studio microsoft-fakes (3)
Creo que tu respuesta es usar uno de los siguientes comandos:
VSTest.Console.exe UnitTests.dll /UseVsixExtensions
VSTest.Console.exe UnitTests.dll /TestAdapterPath:%LocalAppData%/Microsoft/VisualStudio/12.0/Extensions/<nunit test adapter installation folder>
Estos comandos se ejecutarán bien en las máquinas de desarrollo. En caso de que desee ejecutar pruebas unitarias en el servidor de compilación, copie la carpeta del adaptador de prueba nunit para construir el servidor y mencione esa ruta.
Estoy usando una prueba de falso nUnit de prueba de concepto simple:
[Test]
public void TestFakes()
{
using (var ctx = ShimsContext.Create())
{
System.Fakes.ShimDateTime.NowGet = () => { return new DateTime(2000, 1, 1); };
Assert.That(DateTime.Now.Year, Is.EqualTo(2000));
}
}
Esta prueba se ejecuta en Visual Studio Test Explorer, pero no se ejecuta en:
- nUnit GUI
- consola nUnit
- El corredor de prueba de JetBrains (dotCover OR Resharper)
- TestDriven.net prueba de corredor
En cada uno de estos, recibo el siguiente error:
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: no se pudo resolver la ruta del generador de perfiles de las variables de entorno COR_PROFILER_PATH y COR_PROFILER
Cuando reflexiono en ese ensamblaje, parece que está buscando Intellitrace, una característica exclusiva de VS Ultimate, solo tengo Premium instalado.
Cualquier sugerencia sobre cómo solucionar esto (usamos el corredor nUnit en nuestros servidores de compilación, por lo que este es un bloqueador para usar Fakes)
Fakes solo funciona con Visual Studio Test Runner (AKA VStest.Console.exe). Incluso el corredor anterior de Microsoft MSTest no lo admite .
No creo que pueda ejecutar pruebas basadas en MS Fakes usando otra cosa que no sea el marco de prueba de MS.
Creo que la forma en que funciona MS Fakes causa problemas para los corredores de prueba como NUnit. Precisamente por qué este es el caso, no lo sé, ya que otros marcos de simulacros como TypeMock funcionan bien en NUnit, etc. Pero hay algo específico en MS Fakes que hace que sea más difícil (si no imposible) ejecutar con cualquier otra cosa que no sea MS Test. Esa es mi teoría de todos modos.
A menos que los autores de NUnit, xUnit, etc. agreguen soporte para MS Fakes (o haya una solución inteligente), creo que tendrá que seguir con MS Test.
EDITAR:
Parece que la última versión de NCrunch v2.5 funciona con MS Fakes. He probado la versión beta durante su desarrollo y puedo confirmar que las pruebas de MS Fake se ejecutaron sin fallar usando NCrunch.