Comment l'unité de test java principale méthode?

J'ai une classe à laquelle je dois passer 2 arguments par le biais de sa méthode principale, si elle est adoptée en moins de 2 args, il affiche un message d'erreur du système. J'ai écrit un test unitaire pour la méthode main ici, quand je lance le test, il s'arrête à "l'exécution" (montre ni le succès, ni l'échec). S'il vous plaît suggérer.

Example.java

public class Example 
{
    private static String str1   = null;
    private static String str2   = null;

    public static void main(String[] args)
    {
        if( args.length != 2 )
        {
            call();
        }

        Example ex = new Example(args[0], args[1]);
        ex.getData();
    }

    public Example(String str1, String str2)
    {
        Example.str1 = str1;
        Example.str2 = str2;
    }

    public void getData(){
        System.out.println("Name is: "+str1);
        System.out.println("City is: "+str2);
    }

    private static void call()
    {
        System.err.println("Usage: String1 String2");
        System.err.println("Where: ");
        System.err.println("       String1 - Name");
        System.err.println("       String1 - City");
        System.exit(1);
    }   
}

ExampleTest.java

public class ExampleTest {
    @Test
    public void testPassingWrongNumberOfInputs() {
        StringBuffer sb = new StringBuffer();
        sb.append("Usage: String1 String2")
        .append("Where: ")
        .append("       String1 - Name")
        .append("       String1 - City");

        String expectedErrorMessage = sb.toString();

        ByteArrayOutputStream outContent = new ByteArrayOutputStream();
        System.setErr(new PrintStream(outContent));
        String[] args = {"one"};
        Example.main(args);

        assertEquals(expectedErrorMessage, outContent.toString());
    }
}
Quel est le but? Une méthode main est plutôt un-unité. L'idée est de 100% converage est plutôt problématique: il a tendance à faire des tests en quelque sorte plus faible parce que les gens de commencer à inventer non-sens, des tests tout simplement pour obtenir 100% de converage.
Votre test est assez drôle (qui ne doit pas être impoli). Il dit: s'il vous plaît tester cette méthode qui va tuer votre environnement en cours d'exécution, puis nous allons le voir, si vous êtes vivant assez pour me dire si ce test était bon ou pas. En d'autres termes: vérifiez que System.exit(1);.
Le System.exit() appel peut être lié au fait que votre code s'arrête...
Le codage de l'équipe de révision en notre compagnie m'a demandé d'ajouter des tests unitaires pour la méthode main.

OriginalL'auteur devlperMoose | 2016-01-04