¿hay un Equivalente de Assert.MsTest en Adware en MbUnit?¿Equivalente a assert.warning en mstest?
Respuesta
La coincidencia más cercana es Assert.Inconclusive()
- no hace que la prueba falle como tal, pero tampoco funciona. Cae en una tercera etapa llamada No concluyente.
Una única prueba no concluyente causará que un conjunto de pruebas completo no sea concluyente.
Hay sobrecargas que soporta mensajes personalizados, así:
Assert.Inconclusive("Ploeh");
Resulta molesto que una prueba no concluyente sea suficiente para hacer que MSTEST.EXE devuelva el mismo código de estado (1) como error, por lo que si está utilizando un archivo por lotes para configurarlo no podrá notar la diferencia sin más trabajo. –
Tengo un problema similar como yo uso NUnit para algunos proyectos. Trate de usar
Console.Write("Some Warning");
Assert.Inconclusive(); es compatible con NUnit en realidad. http://www.nunit.org/index.php?p=utilityAsserts&r=2.5.8 –
Aquí está mi piratear sobre cómo tener advertencias con nunit (Sé que esta pregunta era acerca mstest, pero esto debería funcionar también). Como siempre, estoy interesado en cualquier mejora. Este método me funciona.
Antecedentes: Tengo un código que comprueba los propios comentarios para obtener comentarios correctos y tiene lógica para detectar si alguien ha copiado y pegado otra prueba sin cambiar los comentarios. Estas son advertencias Quiero que se muestre al desarrollador sin Assert.Inconclusive normal bloqueando la ejecución de la prueba real. Algunos se centran en la prueba y la fase de refactorización de limpieza consiste en eliminar las advertencias.
Misión: tener advertencias después de que se ejecuten todos los demás asertos. Esto significa que incluso muestra las advertencias después de Assert.Fail que normalmente ocurre en las pruebas durante el desarrollo.
Implementación: (mejor esfuerzo para crear una clase base para todos los archivos de prueba):
public class BaseTestClass
{
public static StringBuilder Warnings;
[SetUp]
public virtual void Test_SetUp()
{
Warnings = new StringBuilder();
}
[TearDown]
public virtual void Test_TearDown()
{
if (Warnings.Length > 0)
{
string warningMessage = Warnings.ToString();
//-- cleared if there is more than one test running in the session
Warnings = new StringBuilder();
if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
Assert.Fail(warningMessage);
}
else
{
Assert.Inconclusive(warningMessage);
}
}
}
Pruebas de Uso
[Test]
public void Sample_Test()
{
if (condition) Warning.AppendLine("Developer warning");
Assert.Fail("This Test Failed!");
}
Resultado real:
"This Test Failed!"
"Developer warning"
El estado de la prueba ha fallado - ROJO
Si la prueba pasó y hubo una advertencia, obtendrá el estado de Inconclusive - AMARILLO.
Es posible que desee utilizar una excepción personalizada.
El problema con Assert.Incluso es que Test Explorer indica que la prueba ni siquiera se ejecutó. Esto puede inducir a error al ejecutar la prueba en el futuro, sobre todo si se realiza la prueba por otros desarrolladores:
La forma en que he llegado a preferir es el siguiente. En primer lugar, defina un UnitTestWarningException
personalizado. Le he dado a la mía un constructor adicional para que pueda pasar mi mensaje de advertencia Cadena.Formato de estilo con argumentos:
public class UnitTestWarningException : Exception
{
public UnitTestWarningException(string Message) : base(Message) { }
public UnitTestWarningException(string Format, params object[] Args) : base(string.Format(Format, Args)) { }
}
A continuación, en el punto donde desea finalizar una prueba de unidad con una advertencia, lanzar una UnitTestWarningException
lugar:
[TestMethod]
public void TestMethod1()
{
.
.
.
try
{
WorkflowInvoker.Invoke(workflow1, inputDictionary);
}
catch (SqlException ex)
{
if (ex.Errors.Count > 0
&& ex.Errors[0].Procedure == "proc_AVAILABLEPLACEMENTNOTIFICATIONInsert")
{
//Likely to occur if we try to repeat an insert during development/debugging.
//Probably not interested--the mail has already been sent if we got as far as that proc.
throw new UnitTestWarningException("Note: after sending the mail, proc_AVAILABLEPLACEMENTNOTIFICATIONInsert threw an exception. This may be expected depending on test conditions. The exception was: {0}", ex.Message);
}
}
}
El resultado: el Explorador de prueba a continuación, muestra que la prueba ha sido ejecutado, pero no con un UnitTestWarningException
que muestra su advertencia:
- 1. ¿Hay un MSTest equivalente al atributo explícito de NUnit?
- 2. MSTest & AppDomains
- 3. MSTEST PrincipalPermission
- 4. Preguntas al pasar de MbUnit a MsTest
- 5. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 6. Uso de herencia en MSTest
- 7. ¿cuál es el atributo de prueba equivalente para TestFixtureSetUp de Nunit en MSTest
- 8. MSTest + ajedrez en VS 2010
- 9. ExpectedExceptionAttribute no funciona en MSTest
- 10. MsTest DeploymentItem OutputDirectory en testsettings
- 11. WatiN en MSTest - ClassCleanup fallar
- 12. Usando MSTest con CruiseControl.NET
- 13. Adjunte una imagen a un informe de prueba en MSTest
- 14. ¿Qué sería una alternativa a [SetUp] y [TearDown] en MSTest?
- 15. Usando MSTest con F #
- 16. Categorizar casos de MsTest
- 17. MSTest y NHibernate
- 18. MSTest TestMethod Dependency Injection
- 19. MSTest ExpectedException falla
- 20. MSTest Code Coverage
- 21. ejecutar pruebas en mstest sin compilación/construcción
- 22. ¿Equivalente a FileInputStream en J2ME?
- 23. Equivalente a InvokeRequired en WPF
- 24. Equivalente a GetTickCount() en Linux
- 25. equivalente a "touch" en scons?
- 26. ¿Equivalente a #define en Java?
- 27. Equivalente a "continuar" en Ruby
- 28. Equivalente a Double.doubleToLongBits en C#?
- 29. Equivalente a% ~ dp0 en sh
- 30. Equivalente a eval() en Groovy
Buena pregunta. MSFT decidió descartar las normas de pruebas unitarias existentes y, en cambio, ideó algo bastante torpe. –