Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
Depuración de prueba de NUnit

Estoy trabajando en una biblioteca de Geometría. Hay más de 200 pruebas unitarias.

Hay una prueba particularmente obstinada que falla cada vez que selecciono "Ejecutar todo", pero la prueba pasa cuando ejecuto esa prueba individualmente o uso el depurador en ella. Creo que el problema apareció cuando cambié de Visual Studio '13 a la edición '15.

Ahora algunas notas sobre la biblioteca de geometría:

Los objetos son inmutables.

Las pruebas no tienen objetos compartidos entre ellas.

Entonces mi pregunta: ¿Cuáles son las posibles causas de este comportamiento extraño?

Editar:

 [Test()] public void Plane_IntersectionWithPlane_IdenticalPlane() { Plane testPlane = new Plane(new Direction(Point.MakePointWithInches(2, -1, 1)), Point.MakePointWithInches(2, 1, 2)); Line found = (testPlane.Intersection(testPlane)); Line expected = new Line(new Direction(Point.MakePointWithInches(0, -1, -1)), Point.MakePointWithInches(2, 1, 2)); Assert.IsTrue(found.Equals(expected)); }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Me he encontrado con problemas similares en el pasado, pero siempre resultó ser una interacción inesperada entre los elementos del código subyacente o la forma en que se escribieron las pruebas. Algunas cuestiones a comprobar son:

  • Construcción / destrucción de objetos estáticos
  • Problemas de sincronización
  • Simulacros de problemas de configuración/limpieza

Descubrí que el mejor enfoque para rastrear el problema es seguir un enfoque similar al sugerido por @Matthew Strawbridge en los comentarios. Agrego los atributos Ignore a Tests/TestFixtures para eliminar las pruebas hasta que el run-all comience a funcionar y luego empiezo a agregarlos nuevamente hasta que se rompa nuevamente y se reduzca el problema.

A veces también encontrará que ignorar la prueba que actualmente está fallando hará que otra prueba falle en su lugar. Esta es una buena indicación de que el problema en realidad está siendo causado por otra de sus pruebas que no se limpia correctamente.

Mirar el código entre las pruebas que fallan/parecen causar la falla puede ayudarlo a reducir la interacción. El motivo del error/fallo de las pruebas también puede ayudar, por supuesto...

Al seleccionar 'Ejecutar todo', se ejecutan todas las pruebas en un orden predecible, por lo que las pruebas generalmente se ejecutarán de la misma manera cada vez. Si selecciona un lote de pruebas, es posible que el corredor elija ejecutarlas en un orden diferente, en función de su orden de selección, lo que puede ser la razón por la que experimentó un comportamiento diferente al seleccionar las pruebas, en lugar de ejecutar todo.

over 4 years ago · Santiago Trujillo Denunciar

0

Prueba lo siguiente:

Abra la GUI de Nunit y antes de ejecutar la prueba, cambie lo anterior en la configuración:

ingrese la descripción de la imagen aquí

Me ayudó una vez a detectar mis problemas.

Por cierto: ¿qué versión de NUNIT estás usando? Si no sabe qué es la GUI de Nunit, probablemente no descargó Nunit por separado. Puede obtener la instalación desde aquí:

http://www.nunit.org/index.php?p=download

over 4 years ago · Santiago Trujillo Denunciar

0

Por lo que veo en el caso de prueba, un comportamiento divergente es extraño, pero la falla de la prueba es un resultado perfectamente válido:

Un plano intersectado consigo mismo sería el plano, por lo que si el resultado se limita a ser una línea, entonces cualquier línea con 2 puntos distintos en el plano sería un resultado válido, pero la prueba de una línea en particular parece ingeniería inversa de los resultados de ejecución. en las expectativas de la prueba.

Sería una historia diferente si el requisito/la especificación es muy específica sobre la dirección de las líneas resultantes de la intersección de la identidad, por lo que tal vez desee brindar más información en esta área.

Lo siento por publicar esto como respuesta en lugar de un comentario: falta representante.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda