junit
Test exekveringsorder
Sök…
Syntax
- @FixMethodOrder // Kör test med standardmetodsorterare
- @FixMethodOrder (MethodSorters) // Kör test med MethodSorter associerat med MethodSorters enum.
Standardorder
Använd annotationen - @FixMethodOrder(MethodSorters.DEFAULT)
. Detta kör alla test inom klassen i en deterministisk och något förutsägbar ordning. Implementeringen har metodnamnen och jämför dem. I scenariot med ett slips sorteras det efter leksikografisk ordning.
Kodssegment nedan taget från 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);
}
Exempel
@FixMethodOrder(MethodSorters.DEFAULT)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
Anta att hascher för testA
, testB
och testC
är 3, 2 respektive 1. Då är exekveringsordern
- testC
- testB
- TESTA
Anta att hascher för alla test är desamma. Eftersom alla hascher är desamma, baseras exekveringsorder på leksikografisk ordning. Exekveringsorder är
- TESTA
- testB
- testC
Lexikografisk ordning
Använd annotationen @FixMethodOrder
med metodsorteraren MethodSorters.NAME_ASCENDING
. Detta kör alla tester inom klassen i en deterministisk och förutsägbar ordning. Implementeringen jämför metodnamnen och i fallet med jämföra jämförs metodernas toString()
.
Kodssegment nedan taget från 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());
}
Exempel
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
Exekveringsorder är
- TESTA
- testB
- testC