dimanche 25 janvier 2015

Wer kann mir die Ausgabe beim auführen der CounterTests sagen?

Gegeben ist folgende Klasse Counter für Aufzählungszwecke:





public class Counter {

private long counter = 0l;

public long getCounter() {

return counter;

}

void setCounter(long counter) {

this.counter = counter;

}

public void count() {

long c = counter;

try {

Thread.sleep(10);

} catch (InterruptedException e) {

e.printStackTrace();

}

this.counter = c + 1l;

}

}





Zusätzlich ist folgende Runnable-Implementierung gegeben:





public class CounterRunnable implements Runnable {

private Counter counter;

public CounterRunnable(Counter counter) {

super();

this.counter = counter;

}

@Override

public void run() {

for (int i = 1; i <= 50; i++) {

counter.count();

}

}

}





Nun wird folgender JUnit-Test ausgeführt:

public class CounterTest {

@Test

public void testCount() {

Counter c = new Counter();

for (int i = 1; i <= 50; i++) c.count();

for (int i = 1; i <= 50; i++) c.count();

assertEquals(100l, c.getCounter());

}

@Test

public void testCount2() {

Counter c = new Counter();

Thread t1 = new Thread(new CounterRunnable(c));

Thread t2 = new Thread(new CounterRunnable(c));

t1.run();

t2.run();

assertEquals(100l, c.getCounter());

}

@Test

public void testCount3() throws InterruptedException {

Counter c = new Counter();

Thread t1 = new Thread(new CounterRunnable(c));

Thread t2 = new Thread(new CounterRunnable(c));

t1.start();

t2.start();

Thread.sleep(2000);

assertEquals(100l, c.getCounter());

}

}

Was sind die Ergebnisse der einzelnen Test-Methoden und warum?





Wer kann mir die Ausgabe beim auführen der CounterTests sagen?

0 commentaires:

Enregistrer un commentaire