2010-01-19 8 views
5

Acabo de descubrir que estaba obteniendo el doble de pruebas que debería haber estado recibiendo. Lo descubrí cuando se rompió una prueba y obtuve dos fallas de prueba idénticas. La misma prueba, mismo todo. Me confundió bastante, pero logré reducirlo a cierta clase de prueba que era una clase parcial.NUnit, TestDriven.Net: Duplicar los resultados de las pruebas con clases de prueba parcial

La razón por la que era una clase parcial era que había dividido una clase de prueba en dos, solo para hacerlo un poco más limpio. La clase bajo prueba tenía un cierto método que requería una gran variedad de pruebas y pensé que sería más limpio tenerlas en un archivo separado. Pero dado que se utilizaron uno o dos métodos de ayuda, pensé que podría hacer que la clase sea parcial para que ambos archivos tuvieran acceso a esos métodos.

El marco de prueba es NUnit y las pruebas se ejecutaron utilizando TestDriven.Net. Ejecutaba las pruebas desde un solo método de prueba (se informaron dos pruebas aprobadas en lugar de una), en la clase (se aprobó el doble de pruebas) y en todo el proyecto de prueba.

Se arregló para solucionar el problema al hacer que las clases no sean parciales y solo se dupliquen esos pequeños métodos de ayuda (podría moverlos a una clase de ayuda por separado o algo más adelante).

Ahora ... ¿por qué sucede esto? Pensé que las clases parciales se compilaron en una sola clase. ¿Es esto un problema con clases parciales en general, NUnit, Test-Driven.net o algo completamente diferente?

Respuesta

2

Probablemente coloque el atributo [TestFixture] en ambos archivos de la clase parcial. Esto causará que TestFixture se emita dos veces en la definición de la clase IL y NUnit ejecutará el mismo código de prueba dos veces. Solo debe agregar [TestFixture] en uno de los archivos para su clase parcial.

+0

Ooooh. Eso podría tener algo que ver con eso, sí. Pero ¿por qué el atributo 'TestFixture' se puede agregar dos veces a una clase? Eso simplemente no tiene sentido ... ¿o es una razón para que eso sea posible? – Svish

+0

Tengo que probarlo ahora, y eliminar el atributo 'TestFixture' de una de las clases parciales solucionó el problema :) – Svish

Cuestiones relacionadas