Java >> Java tutorial >  >> Tag >> class

Junit-test af en klasse kræver objekter af andre klasser

Jeg har en klasse defineret som sådan:

public class Monster {
    public static final int ARENA_SIZE = 480;

    public int health; //can be negative since it will then be removed
    public int speed;
    public int counter;
    public int x; //current position
    public int y; //current position
    public mapObject next;
    public void nextAlgorithm(mapObject[][] map) {
        aNode[][] aNodeMap = newANodeMap(map); //1. create a new aNodeMap

        PriorityQueue<aNode> pq = newPriorityMap(aNodeMap[this.x][this.y]); //2. create a new priority queue with starting point added
        aNode current;

        while (pq.isEmpty() == false) {
            current = pq.poll();
            if (endPointReached(current.x, current.y)) //3. Is the end point reached?
                break;
            aNode[] neighbours = findNeighbour(current.x, current.y, aNodeMap); //4. The end point isn't reached, find me the neigbours
            for (aNode neighbour : neighbours) //5. process all my neighbours
                processNeighbour(current, neighbour, pq);
        }
        next = updateNext(aNodeMap[ARENA_SIZE - 1][ARENA_SIZE - 1], this.x, this.y); //6. Update my next after all these work
    }

Kort sagt er der en algoritme, der kræver input fra en anden klasse, mapObject, som også er en anden selvskrevet pakke af mig.

Mit spørgsmål er, bortset fra

import MapObject.*;

i junit, der giver mig mulighed for at initialisere et armatur i

@Before

Er der nogen bedre måder?

Svar

Det er sandsynligvis bedre at oprette input-objektet (dvs. mapObject[][] ) i selve testcasen i stedet for i en @Before metode. Dette giver dig mulighed for at oprette flere testcases med forskellige inputobjekter.

Dvs.

@Test void testWithSpecificArrayConfiguration1() {
    mapObject[][] objectConfig1 = createConfig1();
    testMonster.nextAlgorith(objectConfig1);
    // verification steps for config 1
}
@Test void testWithSpecificArrayConfiguration2() {
    mapObject[][] objectConfig2 = createConfig2();
    testMonster.nextAlgorith(objectConfig2);
    // verification steps for config 2
}

Som en note føles det ikke rigtigt, at inputtet er en mapObject , men den faktiske algoritme virker på en aNode[][]; men det er svært at sige uden at kende konteksten af ​​koden.


Java tag