J'essaie d'écrire un test unitaire C# avec le cadre de test unitaire intégré de VS 2008 et la méthode que je teste les appels Environment.Exit(0)
. Lorsque j'appelle cette méthode dans mon test unitaire, mon test d'unité est Aborted. La méthode devrait en effet appeler Exit
, et je veux un moyen de tester ce qu'il fait, et aussi de tester le code de sortie qu'il utilise. Comment pourrais-je faire ça? J'ai regardé Microsoft.VisualStudio.TestTools.UnitTesting Namespace mais je n'ai rien vu de pertinent.Tests unitaires VS2008 - sortie de la méthode assert
[TestMethod]
[DeploymentItem("myprog.exe")]
public void MyProgTest()
{
// Want to ensure this Exit's with code 0:
MyProg_Accessor.myMethod();
}
En attendant, voici l'essentiel du code que je veux tester:
static void myMethod()
{
Environment.Exit(0);
}
Edit: est la solution ici je dans ma méthode d'essai, grâce à RichardOD:
Process proc;
try
{
proc = Process.Start(path, myArgs);
}
catch (System.ComponentModel.Win32Exception ex)
{
proc = null;
Assert.Fail(ex.Message);
}
Assert.IsNotNull(proc);
proc.WaitForExit(10000);
Assert.IsTrue(proc.HasExited);
Assert.AreEqual(code, proc.ExitCode);
+1 sur Typemock Isolateur ici - c'est la seule solution que je suis au courant de ce qui vous permet d'intercepter et moquez absolument rien. –
Le danger de pouvoir se moquer des méthodes statiques est que vous ne vous détachez pas de les utiliser aussi facilement. En fait, je trouve que (pour mon code) être obligé de travailler très dur pour avoir des méthodes statiques est une bonne chose car je ne les utiliserai pas à moins qu'ils ne soient la meilleure solution absolue. Cela aide à forcer le développement en utilisant de meilleures techniques, IMO. L'inconvénient est que vous êtes obligé de sauter par des cerceaux lorsque vous interagissez avec ces méthodes statiques quand elles ont un sens (ou le cadre n'est pas construit avec des tests en tête). – tvanfosson
@ tvanfosson- C'est un bon point. C'est pourquoi de nombreuses personnes (y compris moi-même) essaient d'éviter de trop utiliser les méthodes statiques lors de l'écriture de code testable. Les classes de framework .NET qui sont statiques sont un test de douleur et les développeurs doivent souvent recourir à l'écriture de code wrapper pour le rendre testable (selon votre réponse). Vous pouvez voir cela beaucoup de l'évolution des formulaires Web ASP.NET à ASP.NET MVC. – RichardOD