visual unitarias unit test studio pruebas framework ejemplo c# unit-testing mstest vs-unit-testing-framework

c# - unitarias - MSTest: no se ejecutan pruebas porque no se cargan pruebas o las pruebas seleccionadas están deshabilitadas



unit test framework c# (18)

Tengo una solución de CA con la siguiente estructura:

mySolution myProject myProject.MSTests References Microsoft.VisualStudio.QualityTools.UnitTestFramework sutMSTests.cs

sutMSTests.cs:

[TestClass()] public class sutMSTests { [TestMethod] public void MyTest0() { Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2); } }

Cuando intento ejecutar las pruebas a través de Prueba, Ejecutar, Todas las pruebas en solución, obtengo lo siguiente en la línea de estado VS2008:

No se ejecutan pruebas porque no se cargan pruebas o las pruebas seleccionadas están deshabilitadas.

Prueba, Windows, Vista de prueba no muestra ninguna prueba.

Nota: Creé las pruebas de forma manual (funciona para xUnit.net) en lugar de utilizar los asistentes de Microsoft.

He comparado mi configuración MSTest creada a mano con la configuración otra prueba que generé usando el asistente y parecen ser lo suficientemente similares.

Pregunta: ¿Cuáles son las causas más probables del mensaje de error anterior?

Editar 2010-02-25: más información:
Hice clic derecho en la carpeta Elementos de la solución y seleccioné Agregar, Proyecto nuevo, escribí Test Projects, Test Documents :: Plantilla de Visual Studio Test Project.

La prueba predeterminada del nuevo proyecto no hace nada, se detectó y pasó "TestMethod1".
Sin embargo, mi prueba no apareció ... así que copié y pegué mi método de prueba en el proyecto de prueba de prueba predeterminado "TestProject1".

Mi prueba se detectó en "TestProject" PERO no en su ubicación original.

Combiné de cerca los archivos, la organización y la configuración de "TestProject1" con mi proyecto de prueba creado a mano.

En este punto, supongo que la plantilla de Visual Studio Test Project no se puede detectar fácilmente.

Imo, debería ser tan fácil crear un proyecto de prueba a mano como crear uno con la plantilla de Visual Studio Test Project.

tenga en cuenta: no estoy diciendo que estoy en contra de usar la plantilla de Visual Studio Test Project; para mí, me gusta entender qué hay detrás de la cortina, ya que esto me hace ser mucho mejor programador.


¿Tienes un archivo VSMDI en tu solución? Creo que este archivo es obligatorio (NO VERIFICADO).


Acabo de hacer esto manualmente:

Creó un nuevo proyecto de biblioteca de clase C # con el siguiente código:

namespace SO_Answer { public class Class1 { public void Test() { var k = "Hello"; } } }

Guardado el proyecto y luego fui a ''Archivo-> Agregar-> Nuevo proyecto'' y elegí ''Probar proyecto''. Después de que VS creó el proyecto de prueba de unidad, agregué una referencia al proyecto de biblioteca de clase que creé anteriormente.

En mi prueba tengo este código:

namespace Unit_Test { /// <summary> /// Summary description for UnitTest1 /// </summary> [TestClass] public class UnitTest1 { /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get; set; } #region Additional test attributes // You can use the following additional attributes as you write your tests: // Use ClassInitialize to run code before running the first test in the class // [ClassInitialize()] // public static void MyClassInitialize(TestContext testContext) { } // Use ClassCleanup to run code after all tests in a class have run // [ClassCleanup()] // public static void MyClassCleanup() { } // Use TestInitialize to run code before running each test // [TestInitialize()] // public void MyTestInitialize() { } // Use TestCleanup to run code after each test has run // [TestCleanup()] // public void MyTestCleanup() { } #endregion /// <summary> /// The test method 1. /// </summary> [TestMethod] public void TestMethod1() { var f = new Class1(); } } }

El único código que agregué fue el a using y el var f = new Class1(); declaración. Al mirar el corredor MSTest, puedo ver que TestMethod1 aparece.

No puedo pensar en una razón por la cual las pruebas de su unidad no se recogen. La única vez que tuve esto fue porque estaba usando el corredor MSTest para intentar ver las pruebas NUnit por error. Intenta comenzar desde cero.


Cuando se encuentra con este problema, en Visual Studio, debe crear un Proyecto de prueba. 1. Seleccione Prueba en la barra de herramientas y elija "Nueva prueba". Crea tu proyecto y en este punto crea tu método de prueba. Debería funcionar después de este punto.


El póster original sí lo hizo, pero llegué aquí después de no haber hecho esto:

Asegúrese de que [TestClass] esté declarado en la parte superior, de ámbito público:

namespace XYZ.API.Repository.Tests { [TestClass()] public class ClientTests {


Esta podría ser otra razón. Compruebe si la solución se ejecuta en 64 bits. Si es así, cámbialo a x86.


Estaba haciendo uso de un método public TestContext TestContext para escribir en la salida de prueba y cambié el alcance a private . Esto hizo que cada prueba no sea detectable. Cambiarlo a public ayudó.


Estaba recibiendo el mismo mensaje y resultó ser que tenía mi proyecto de prueba de unidad en una unidad de red. Una vez que lo moví local, funcionó bien. Algo para probar si obtienes este error. John


Esto debe ser un error y es un dolor absoluto, especialmente ya que tiene que volver a habilitar cada método de prueba individualmente. Sin embargo, un poco de pensamiento lateral produjo una mejor solución: cambiar el nombre de la clase de prueba y reconstruir. Luego cámbiale el nombre. Parece funcionar. Ooops - no, no. Renombrar la clase funciona, pero cuando se renombra, vuelve a la configuración original. El truco consiste en cerrar Visual Studio y eliminar el archivo .vsmdi (metadatos de pruebas visuales de estudio). Esto se regenerá


La solución es simple, aunque no debería ser necesaria, si Visual Studio funciona como debería.

Para resumir lo que otros han contribuido, particularmente http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html , esto es lo que finalmente funcionó para mí:

  • Use Configuration Manager para asegurarse de que su proyecto de prueba esté seleccionado para compilar en cualquier configuración y plataforma que esté usando (por ejemplo: configuration = Debug and platform = x86)
  • Asegúrate de que tu método pertenezca a [TestClass] y que esté marcado [TestMethod] , y NO use el atributo [Ignore]
  • Use Test View para encontrar su prueba.
  • Abra su ventana de Propiedades ( F4 ) y asegúrese de que su prueba esté habilitada

Ninguna de las otras respuestas funcionó para mí. Seguí recibiendo el siguiente mensaje en la ventana de salida:

------ Discover test started ------ ========== Discover test finished: 2 found (0:00:00.1310428) ========== No tests found to run.

En mi caso, el problema solo ocurrió después de que creé una nueva configuración llamada 0-Local. Tuve que agregar <DebugSymbols>true</DebugSymbols a la sección relevante de mi archivo csproj, por lo que se ve así:

<PropertyGroup Condition="''$(Configuration)|$(Platform)'' == ''0-Local|AnyCPU''"> <DebugSymbols>true</DebugSymbols> <OutputPath>bin/0-Local/</OutputPath> </PropertyGroup>



Otra para los googlers: este resultó ser mi problema, y ​​es embarazosamente miserable para mí. Asegúrese de que su proyecto de prueba esté configurado para compilar en cualquier configuración de solución que esté utilizando. Si no se está construyendo el ensamblaje de prueba, VS no podrá encontrar ninguna prueba en el ensamblaje que no existe, y se golpeará la cabeza contra la pared por un tiempo :-)


Otra para los usuarios de google que usan NUnit, especialmente aquellos que han migrado de la prueba de Unidad de MS a NUnit. Elimine el tipo de proyecto Guías que identifican el proyecto como proyecto de prueba MS del archivo de proyecto.

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>


Para la posteridad: Acabo de descubrir que las pruebas de marcado como estática las hacen silenciosamente no aparecen en la lista de pruebas. Aparentemente eso no está permitido.


Posiblemente un poco tarde, pero esta pregunta es muy buena, pensé en tirar algunas migajas para futuros googlers.

Bryan Cook sugiere verificar las ProjectTypeGuids en su publicación de blog sobre Creación manual de un Proyecto de prueba de MS . Aparentemente los GUID mágicos que necesita son {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} para c # y {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} para VB. Vea su publicación en el blog para más detalles.

En caso de que la publicación del blog desaparezca, debe agregar el siguiente elemento en el grupo de propiedades principal en el archivo csproj:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>


Si su código es CLI (managed c ++) y su clase de prueba hereda de una clase base abstracta, asegúrese de que su clase de prueba implemente el método virtual puro de la base. si no lo implementó, puede ver el mensaje "No se encontraron pruebas para ejecutar".


Tenía este mismo problema pero leyendo las respuestas anteriores, todo se veía bien.

En mi caso, acababa de ejecutar el conjunto de pruebas hizo un pequeño cambio, construyó la solución y trató de ejecutar la prueba. No vayas. Intenté construir un par de veces más y buscar problemas que otras personas habían intentado. Todavía no ir.

Pulso Intro en uno de mis métodos de prueba para agregar uno nuevo y presiono F6 para generar la solución y hago clic en Ejecutar pruebas unitarias.

¡Bingo! Todo funcionó sin problemas.


este es un problema típico al que me he enfrentado también. pero la solución más fácil que seguí como la mía es ... solo para construir el proyecto una vez y reconstruirlo de nuevo. para que puedas resolverlo