El método de prueba no es concluyente: la prueba no se ejecutó. ¿Error?

172

Tengo una clase de prueba y debajo he publicado una prueba de muestra de la clase de prueba

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

Cuando ejecuto el proyecto aparece la siguiente pantalla ingrese la descripción de la imagen aquí

Revisé las referencias y el proyecto de prueba tiene la referencia al proyecto principal. ¿Alguna idea de por qué la prueba no se ejecuta o dice que no fueron concluyentes?

Editar 1:

Vi una publicación aquí y cambié la arquitectura de procesador predeterminada de la configuración de mi prueba a X64, pero todavía no funciona.

Cybercop
fuente
3
Es un problema conocido en ReSharper. Aquí hay algunas soluciones potenciales: stackoverflow.com/questions/12191352/… .
Chris Mantle
3
¿Has hecho una limpieza y reconstrucción? Recuerdo que hay algo extraño en VS2010 con la pérdida de referencias a ensamblajes después de haberlos actualizado y reconstruido.
Mark Walsh
@ChrisMantle Lo revisé y cambié mi arquitectura de procesador predeterminada, pero todavía no funciona
Cybercop
@ MarkWalsh Estoy usando VS2012. Todavía limpié y reconstruí la solución como dijiste, pero aún no funciona
Cybercop
9
esta pregunta se discute en meta
gnat

Respuestas:

133

En caso de que ninguna de las opciones anteriores funcionó para nadie, arreglé mi instancia de este error al notar una entrada corrupta en mi App.Config debido a un paquete nuget faltante en el proyecto de prueba.

Chris Pacey
fuente
55
Mismo problema aquí. Sería bueno si R # burbujeara el error (error al inicializar el sistema de configuración), por lo que sería obvio por qué no se ejecutaron las pruebas.
Geoffrey Hudik
55
Gracias por mí, puse los ajustes de la aplicación por encima de las configuraciones por error, lo moví a una posición adecuada y funciona.
anIBMer
3
Agregué specflow a través de nuget e insertó una entrada en App.config. Eso creó todo el problema. Creé un nuevo App.config y agregué la referencia nuevamente y se solucionó. Gracias por la información.
Vinee
Puedo corroborar que casi dos años después de que esta publicación se hizo inicialmente, esto todavía parece ser una solución viable (estoy usando VS 2015 y ReSharper 9.2).
Steven D.
2
¡Bingo! Gracias Chris En mi caso, era la sección log4net sin un nombre de sección de mecanizado <configSections>.
datps
47

Para mí fue bastante frustrante, pero al menos he encontrado una solución para mi caso:

Si su TestMethod es asíncrono, no se puede anular. DEBE devolver la tarea.

Espero que ayude a alguien :)

Krzysztof Skowronek
fuente
37

Tuve el mismo problema con resharper y corrigí este error al cambiar una opción:

Resharper => Opciones => Herramientas => Prueba de unidad

Solo tuve que desmarcar la opción "Ensambles de instantáneas que se están probando"

Elias Platek
fuente
2
Esto lo resolvió para mí, después de mirar un montón de otras soluciones. Estoy usando VS 2013 y R #
v8.1
10
No funcionó para mí, estoy usando VS2015 con Reshaper 10.
Nemeas
Esto me ayudó a trabajar con VS2017 y Resharper Ultimate 2017.2.2 en un proyecto de prueba NETCore.
Tasker
Funcionó para mí y no tengo que borrar la compilación para las pruebas ahora. Gracias Elias
PhoenixPan
22

Era un problema de Resharper. En las opciones de Resharper-> Herramientas-> MSTEST, desmarqué Usar Legacy Runner y ahora funciona.

Cybercop
fuente
61
No tengo esa opción en Herramientas-> Prueba de unidad-> MsTest. (Resharper 9.2.)
cederlof
Tampoco tengo esa opción en R # 2017.2.
realsonic
Para mí, la opción estaba debajo de Herramientas-> Prueba de unidad-> MsTest y desmarcar me ayudó.
Marcel
15

Estaba teniendo este problema, y ​​resultó ser el mismo que este problema aquí . Esta respuesta resolvió el problema para mí .

  1. Desmarque "Solo compilar proyectos de inicio y dependencias en Ejecutar" (Opciones -> Proyectos y soluciones -> Compilar y ejecutar)
  2. En Configuration Manager, asegúrese de que tanto el proyecto de inicio como el proyecto de prueba tengan marcada "Build".

La segunda vez que llegué a este problema, se debió a un ampersand en la ruta del archivo al proyecto donde residen las pruebas. Funciona bien con el corredor de prueba de ReSharper, pero no con dotCover. Elimina el ampersand de la ruta del archivo.

Este es un error confirmado con dotCover.

RubberDuck
fuente
1
Trabajó para mi. VS2017 con ReSharper 2017.1.3 :-)
Lars Holdgaard
12

Para mí, simplemente limpiar y reconstruir la solución lo arregló.

Mike Chamberlain
fuente
Había (accidentalmente) revertido los cambios en el archivo del proyecto al cambiar de rama en Git. Cuando intenté ejecutar la prueba haciendo clic derecho en la clase (la ventana de código todavía estaba abierta) no se ejecutó ya que no era parte de la solución.
mortb
12

Para mí, el problema era un archivo XML de configuración de NUnit / ReSharper corrupto (debido a una escasez inesperada de energía).

Para identificar el error, inicié Visual Studio con este comando :

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

Examinar el archivo reveló la siguiente excepción:

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)

Tenga en cuenta que esto NO es la aplicación.config del proyecto de prueba.

Una búsqueda rápida en Google identificó el siguiente archivo como el culpable:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Existía, pero estaba vacío. Eliminarlo y reiniciar Visual Studio resolvió el problema.

(Usando Visual Studio Professional 2017 v15.3.5 y ReSharper 2017.2.1).

Reyhn
fuente
12

Enfrenté este problema en vs 2017 actualización 3 con Resharper Ultimate 2017.2

Reiniciar o reiniciar la máquina no puede ayudar.

Resolví el problema borrando la caché de la siguiente manera:

    Resharper ->options-> Environment ->click the button 'Clear caches'

Actualizar:

Hay un "error" de botón (lo encuentro en Resharper 2018) en la esquina superior derecha de la ventana de prueba.

Si hace clic en el botón de error, muestra un mensaje de error que puede ayudar a resolver el problema.

Para rastrear la raíz del problema, ejecute Visual Studio en modo de registro. En vs 2017, ejecute el comando:

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

Ejecute la prueba

Revise el archivo de registro test_log.txt y busque 'error' en el archivo.

El archivo de registro es de gran ayuda para encontrar el error que puede resolver o puede enviar el problema con el archivo de registro al equipo de soporte técnico de Resharper .

M.Hassan
fuente
7

También solucioné este problema también. Sin embargo, ninguna de las soluciones en este hilo funcionó. Esto es lo que hice ...

Dado que R # no estaba dando ningún detalle sobre por qué las cosas estaban fallando, decidí probar el corredor de prueba VS2013 incorporado. Experimentó exactamente el mismo comportamiento donde ninguna de las pruebas se ejecutó. Sin embargo, mirando en la ventana Salida, finalmente tuve un mensaje de error:

Se produjo una excepción al invocar al ejecutor 'executeor: // mstestadapter / v1': la referencia de objeto no está establecida en una instancia de un objeto.

Esto me llevó a otro hilo en SO con una solución. Créeme, NUNCA habría adivinado cuál era el problema.

Recientemente hice algunos cambios en el archivo AssemblyInfo.cs al crear un paquete NuGet. Uno de los cambios incluye la especificación de un valor de cultura de ensamblado de "en".

Cambié esto:

[assembly: AssemblyCulture("")] 

a esto:

[assembly: AssemblyCulture("en")]`. 

¡Eso fue todo! Eso es lo que inexplicablemente rompió mis pruebas unitarias. Sin embargo, todavía no entiendo por qué. Pero al menos las cosas están funcionando de nuevo. Después de revertir este cambio (es decir, volver a establecer la cultura ""), mis pruebas comenzaron a ejecutarse nuevamente.

Espero que ayude a alguien por ahí.

mikesigs
fuente
1
Cambié la cultura de ensamblaje y R # dejó de ejecutar las pruebas.
Valentine Zakharenko
¡gracias! comprobar la ventana de resultados reveló mi problema, ¡la clase no era pública!
Jony Feldman
7

En mi caso, los [Test]métodos eran justos private. Vergüenza

pkuderov
fuente
1
Extraño, ReSharper simplemente se quejó de que mis métodos [Test] eran privados. Debe ser una nueva característica.
Kevin B Burns
7

Mi problema era que solo había instalado NUnit con nuget. No había instalado NUnit3TestAdapter, que también era necesario.

Install-Package NUnit3TestAdapter
Mike Olund
fuente
¡Este es uno de esos problemas frustrantes que te da pocas pistas sobre el problema real!
Ben Power
6

En mi caso, fue un error que cometí al copiar la cadena de conexión en la app.config ... ¡Lo había puesto dentro de la etiqueta configSections!

Me tomó un tiempo darme cuenta de eso ... gracias VS intellisense ... ¿o fue un compartidor?

Kcats Wolfrevo
fuente
en mi caso, fue resultado del cambio no válida en el archivo de configuración
evgenyl
Mi problema fue causado por una mala resolución de conflictos de Git que dejaba la información de cambio de Head en mi archivo de configuración resuelto
KiwiSunGoddess
Casi lo mismo me sucedió, agregué una cadena de conexión a una sección redundante de AppSettings, cuando eliminé la sección redundante appSettings y moví la cadena de conexión a la appSettings original, funcionó.
Sirar Salih
La respuesta sobre app.config dañado es la misma que la primera stackoverflow.com/a/21386881/52277
Michael Freidgeim
5

Tuve un problema similar. VS 2010, c # CLR 2 Nunit 2.5.7, solo compilar> la solución limpia de VS ayudó a resolver este problema

Abdul Jabbar
fuente
5

En mi caso, creé un método de prueba asíncrono que regresó void. El regreso de en Tasklugar de voidresuelto el problema.

Neshta
fuente
4

¿Has agregado alguna dependencia de DLL recientemente? ... como yo

Me encontré con el mismo problema y fue muy exasperante no tener ninguna pista en la ventana de salida de prueba o en otro lugar práctico.

La causa fue extremadamente estúpida: acabo de agregar el día anterior a la dependencia a un archivo DLL externo adicional en un subproyecto, y la aplicación principal del proyecto se compiló y ejecutó correctamente después del cambio. Pero mis pruebas unitarias están en un proyecto asociado a la aplicación principal, y por lo tanto también dependía de este subproyecto modificado donde se invocó la DLL ... sin embargo, ¡la ubicación del tiempo de ejecución del proyecto de prueba no es la de la aplicación principal! Por lo tanto, cambiar la compilación para hacer la copia de la DLL que falta en el directorio de tiempo de ejecución de prueba solucionó el problema.

berhauz
fuente
4

Estoy usando VS2013, ReSharper 9.1 con la extensión MSpec de ReSharper y Moq. Experimenté el mismo error "no concluyente".

Resultó que uno de mis Simulacros de Moq no se inicializó, solo se declaró. Unos inicializaron todas las pruebas corrieron nuevamente.

Espen Ekvang
fuente
4

En mi caso, recibí este error debido al modo 'Release' donde la construcción del proyecto UnitTests simplemente se apagó. Cambiar de nuevo al modo 'Depurar' lo arregló.

Es realmente sorprendente que ReSharper no pueda decir nada en caso de que no pueda encontrar la biblioteca UnitTests en absoluto. En serio, es una pena;)

Espero que ayude a alguien

RR-Fireball
fuente
4

En mi caso, todos pruebas dentro de algunos proyectos de prueba dentro de una solución comenzaron a no ejecutarse después de agregar nuevos proyectos. Usando VS 2017 con ReSharper 2017.1.2 aquí.

En primer lugar, asegúrese de no perder el tiempo asumiendo que su problema está relacionado con ReSharper. Es fácil suponer que hay algo mal con ReSharper si utiliza sus funciones de prueba de unidad, incluido el Explorador de prueba de unidad . Abra el Explorador de pruebas de Visual Studio en el menú Prueba e intente Ejecutar todo ". La ventaja adicional de hacer esto es que la ventana de salida mostrará un mensaje de error que podría indicarle la dirección correcta. Si observa que el mismo conjunto de pruebas no se ejecutan, entonces es seguro asumir que el problema es con Visual Studio y no con ReSharper.

Terminé eliminando y volviendo a agregar una de la plataforma de solución Active , Any CPU , en Configuration Manager . Al hacerlo, después de guardar mis cambios y volver a abrir la solución, todas las pruebas comenzaron a ejecutarse nuevamente.

Creo que hubo una entrada de configuración inesperada en el archivo de la solución cuando agregué nuevos proyectos y al volver a crear una de las plataformas, se corrigió. Intenté diferir pero fue difícil saber qué había cambiado para causar el problema.

wonster
fuente
En mi caso, tuve un error tipográfico tonto en app.config <AppConfig> en lugar de <AppSettings>. ¡Amo ReSharper, pero REALMENTE necesitan trabajar en sus mensajes de error!
MichaelMilom
4

Para aquellos que están experimentando este problema para mi proyecto de prueba .NET Core 2.0en el Visual Studio 2017 Community (v15.3 3). También tuve este error usando JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- hay un error que publiqué.

JetBrains aconsejó crear un nuevo proyecto de prueba desde cero para reproducirlo. Cuando hice eso y obtuve pruebas que funcionaban bien, encontré la razón que causaba el problema:

  • Elimine esto de su *.csprojarchivo:
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

Cuando hice eso, las pruebas comenzaron a funcionar bien.

Dmitry Pavlov
fuente
Dmitry, gracias, me ayudó. ¿Puedes explicar qué es este servicio?
Vladimir Melekh
@VladimirMelekh revisa este github.com/Microsoft/vstest/issues/472
Dmitry Pavlov
3

Estoy usando VS2010, NUnit 2.6.3 (aunque internamente ReSharper dice que está usando 2.6.2?), ReSharper 7.7.1 y NCrunch 2.5.0.12 y estaba corriendo en la misma cosa "... la prueba no es concluyente ..." con NUnit, pero NCrunch dijo que todo estaba bien. Durante la mayor parte del día, NUnit y NCrunch estuvieron sincronizados y acordaron qué pruebas eran felices y cuáles necesitaban ser refactorizadas, luego sucedió algo que todavía no entiendo, y durante un tiempo NCrunch dijo que tenía pruebas fallidas (pero al pasar por ellas se las mostró a pase), luego decidí que todos estaban trabajando, y NUnit comenzó a quejarse de todas mis pruebas, excepto una con el mismo mensaje "... la prueba no es concluyente ...", que pude volver a pasar a pesar de que NUnit continuó para mostrarlo como "no concluyente").

Intenté varias de las sugerencias anteriores en vano, y finalmente cerré VS2010 y volví a abrir la solución. Voila, ahora todas mis pruebas son felices nuevamente, y NCrunch & NUnit están reportando los mismos resultados nuevamente. Desafortunadamente, no tengo idea de qué cambió para que no estén sincronizados, pero cerrar y volver a abrir VS2010 parece haberlo solucionado.

Tal vez alguien más se encuentre con esto y pueda usar esta solución simple (si finalmente no es satisfactoria ya que no sabe cuál es la solución real).

delliottg
fuente
3

Tuve el mismo problema. El culpable era una referencia externa que no era compatible con la configuración de compilación de mi proyecto. Para resolverlo, hice clic derecho en el proyecto-> propiedades-> compilación-> Objetivo de plataforma-> cambiar de cualquier CPU a x86.

El * .dll particular con el que estaba trabajando era System.Data.SQLite. Ese * .dll particular está codificado para una operación de 32 bits. La configuración "Cualquier CPU" intentó cargarlo como 64 bits.

sapbucket
fuente
El desajuste del objetivo de la plataforma también puede ocurrir con referencias a otros proyectos dentro de la misma solución.
Chaquotay
3

Mi solución:

NUnit 3.2.0 tiene algunos problemas con Resharper - rebaja a 2.6.4:

update-package nunit -version 2.6.4
David McEleney
fuente
3

En mi caso, mi método de prueba era privado, lo cambié a público y funcionó.

Andrew Burns
fuente
3

Causado por el archivo App.Config faltante (no dañado). Agregar nuevo (Agregar -> Nuevo elemento ... -> Archivo de configuración de la aplicación) lo arregló.

Otro fino
fuente
3

Tuve el mismo problema. Estaba relacionado con la versión de compatibilidad entre NUnit 3.5 y Resharper 9.2, ya que se resolvió bajando de NUnit 3.5 a 2.6.4. A mí me funcionó. buena suerte.

Ali Golgol
fuente
Tenía un ensamblaje de prueba compilado contra 3.6.1, y mi ensamblaje de prueba principal fue compilado contra 3.7.1. Bajó a 3.6.1 y ahora todo está bien.
Tom
Fue el caso de ReSharper 2017.3.2 y NUnit 3.11. Ver comentario para nunit github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato
3

Si está utilizando xUnit, resolví el problema al instalar el xunit.running.visualstudiopaquete. (actualmente usando xUnit 2.3.1y VS17 Enterprise 15.3.5)

Alessio Di Salvo
fuente
3

Estaba teniendo el mismo problema para ejecutar cualquier prueba usando el marco NUnit. "No concluyente: prueba no ejecutada" Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

SOLUCIONADO Agregar dependencia de proyecto a Microsoft.NET.Test.Sdk

julio Cesar
fuente
No ayudó en mi caso
Dmitry Avtonomov
2

Para quienes tienen prisa por la ejecución de la prueba, tuve que usar el explorador de prueba VS 2017 para ejecutar las pruebas;

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Teoman shipahi
fuente
2

Este error ocurrió con Visual Studio 2017 y resharper versión 2018.2.3 pero la solución se aplica a las versiones de Visual Studio 2019.

La solución, para que las pruebas funcionen en Resharper, era simplemente actualizar a la última versión de Resharper (2019.2.1) en el momento de la redacción.

Boris
fuente
1

Tuve exactamente el mismo problema y nada ayudó.

finalmente vi que tenía una falta de coincidencia en mis espacios de nombres del proyecto de la unidad y el proyecto de prueba de la unidad.

El espacio de nombres de mi proyecto de unidad es unit.project y el proyecto de prueba se denominó unit.project.tests pero el espacio de nombres predeterminado de la prueba era el mismo que la unidad, ambos eran unit.project.

Una vez que actualicé los espacios de nombres para que fueran diferentes (un espacio de nombres para cada proyecto), ¡todo funcionó!

plata
fuente
Sí, tuve el mismo problema. La idea podría ser hacer que el proyecto de prueba y el proyecto de destino sean idénticos para facilitar el acceso, pero se atornilla con el corredor de prueba y produce este problema desde el OP.
atconway