# Wie funktionieren Testmethoden?



## Derenei (10. Jan 2012)

In der Schule habe ich ein kleines Programm geschrieben welches die Ziffernsumme berechnet.
Ich war in der darauffolgenden Programmierstunden leider Krank und ein Mitschüler hat mir gesagt, dass wie eine Testmethode für dieses Programm erstellen müssen könnte mir jemand von euch sagen wie das funktioniert:
Hier mein Programm:



/**
 * Beschreiben Sie hier die Klasse Ziffernsumme.
 * 
 * @author (Alexander P.) 
 * @version (eine Versionsnummer oder ein Datum)
 */
public class Ziffernsumme
{
    public static void main (String[]args)
    {
        Out.println ("!! Ziffernsummenberechner by Alexander Pittrich. !!");

        Out.print ("Geben Sie eine Zahl ein (max 9000000): ");
        int input = In.readInt ();
        Out.print ("Ziffernsumme "+SumofDigits (input));
        char a;
        do
        {
            Out.print (" Wollen Sie weitermachen? (j/n): ");
            a = In.readChar ();
            if (a == 'j')
            {
                Out.print ("Geben Sie eine Zahl ein (max 9000000): ");
                input = In.readInt ();
                Out.print ("Ziffernsumme "+SumofDigits (input));
            }

            if (a != 'j' && a != 'n')
            {
                Out.print ("! Es ist nur (j/n) erlaubt. !");
            }
        }while (a != 'n');

        if (a == 'n')
        {
            Out.print ("Danke.");
        }
    }

    public static int SumofDigits (int input)
    {
        int t = 100000;
        int t1 = 1000000;
        int lös = 0;
        int erg = 0;
        erg = input/1000000;
        do
        {
            lös = (input%t1)/t;
            erg = erg+lös;
            t1 = t1/10;
            t = t/10;
        }while(t >= 1);
        return erg;
    }

}
und hier die Testmethode die ich erstellt habe:




import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * Die Test-Klasse ZiffernsummeTest.
 *
 * @author  (Ihr Name)
 * @version (eine Versionsnummer oder ein Datum)
 */
public class ZiffernsummeTest
{
    /**
     * Konstruktor fuer die Test-Klasse ZiffernsummeTest
     */
    public ZiffernsummeTest()
    {
    }

    /**
     *  Setzt das Testgerüst fuer den Test.
     *
     * Wird vor jeder Testfall-Methode aufgerufen.
     */
    @Before
    public void setUp()
    {
    }

    /**
     * Gibt das Testgerüst wieder frei.
     *
     * Wird nach jeder Testfall-Methode aufgerufen.
     */
    @After
    public void tearDown()
    {
    }
}




was genau muss ich in der Testmethode machen um zu prüfen wen ich 88 eingebe, dass die Ziffernsumme 16 ist.
Danke im Voraus.


----------



## njans (10. Jan 2012)

Bitte verwende doch die Java-Tags, die groß und rot beim Erstellen eines neuen Beitrags hervorgehoben werden.


----------



## Derenei (10. Jan 2012)

Danke, werde ich beim nächstem mal anders machen.
Hättest du vielleicht schon eine Lösung für meine Testmethode.


----------



## XHelp (10. Jan 2012)

Schau dir doch irgendein JUnit Tutorial an, die gibt es wie Sand am Meer.


----------



## bygones (10. Jan 2012)

du brauchst keinen Konstruktor in der Testclass und @Before und @After sind auch erstmal irrelevant.

Schreib eine Methode mit einem Namen der beschreibt was du testest, die bekommt die @Test Annotation.

In der rufst du deine Klasse/Methode auf die zu testen ist und kannst am Ende das Ergebnis per [c]JUnit.assertEquals(expected, actual)[/c] testen (wobei ich bzgl der reihenfolge von expected, actual nie weiss wierum)

Aber wie schon gesagt - JUnit bei google und das wird der erste/zweite hit sein


----------

