junit
Testuitvoeringsopdracht
Zoeken…
Syntaxis
- @FixMethodOrder // Voert test uit met de standaardmethodesorteerder
- @FixMethodOrder (MethodSorters) // Voert test uit met MethodSorter geassocieerd met het MethodSorters-totaal.
Standaard volgorde
Gebruik de annotatie - @FixMethodOrder(MethodSorters.DEFAULT)
. Hiermee worden alle tests binnen de klasse uitgevoerd in een deterministische en enigszins voorspelbare volgorde. De implementatie hasht de methodenamen en vergelijkt ze. In het scenario van een gelijkspel sorteert het op lexicografische volgorde.
Codesegment hieronder Genomen uit JUnit Github - MethodSorter.java
public int compare(Method m1, Method m2) {
int i1 = m1.getName().hashCode();
int i2 = m2.getName().hashCode();
if(i1 != i2) {
return i1 < i2 ? -1 : 1;
}
return NAME_ASCENDING.compare(m1,m2);
}
Voorbeeld
@FixMethodOrder(MethodSorters.DEFAULT)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
Stel dat hashes voor testA
, testB
en testC
respectievelijk 3, 2 en 1 zijn. Dan is de uitvoeringsorder
- testC
- testb
- testa
Stel dat hashes voor alle tests hetzelfde zijn. Aangezien alle hashes hetzelfde zijn, is de volgorde van uitvoering gebaseerd op de lexicografische volgorde. De uitvoeringsorder is
- testa
- testb
- testC
Lexicografische volgorde
Gebruik de annotatie @FixMethodOrder
met de methode sorter MethodSorters.NAME_ASCENDING
. Hiermee worden alle tests binnen de klasse uitgevoerd in een deterministische en voorspelbare volgorde. De implementatie vergelijkt de methodenamen en in het geval van een gelijkspel, vergelijkt het de methoden ' toString()
.
Codesegment hieronder Genomen uit JUnit Github - MethodSorter.java
public int compare(Method m1, Method m2) {
final int comparison = m1.getName().compareTo(m2.getName());
if(comparison != 0) {
return comparison;
}
return m1.toString().compareTo(m2.toString());
}
Voorbeeld
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
De uitvoeringsorder is
- testa
- testb
- testC