4.1 @Pateni
Saiki ayo goleki sawetara anotasi sing migunani lan populer babagan kerangka JUnit. Anotasi pisanan ngidini sampeyan mateni tes tartamtu supaya JUnit ora nelpon. Perlu yen sampeyan ngelingi yen tes ora bisa digunakake kanthi bener, utawa sampeyan ngganti kode lan tes kasebut ora sengaja rusak.
Kaya sing dakcritakake sadurunge, 99% tes kasebut ora didhukung dening sapa wae, mula kabeh mau cepet-cepet dipateni. Mulane, anotasi iki minangka sing pisanan ing dhaptar sing migunani.
Coba contone:
public class AppTest {
@Disabled("Test is temporarily disabled. True, true")
@Test
void testOnDev(){
System.setProperty("ENV", "DEV");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
}
@Test
void testOnProd(){
System.setProperty("ENV", "PROD");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
}
}
Ing conto ing ndhuwur, cara kasebut testOnDev()
ora bakal diarani. Miturut cara, anotasi @Disabled
bisa ditulis langsung sadurunge deklarasi kelas, banjur kabeh cara bakal diabaikan.
@Disabled("Temporarily turned off the test, we will fix it by May 2001")
public class AppTest {
@Test
void testOnDev(){
System.setProperty("ENV", "DEV");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
}
@Test
void testOnProd(){
System.setProperty("ENV", "PROD");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
}
}
4.2 @Nested
JUnit ngijini sampeyan kanggo nelpon cara test ing kelas nested. Maksudku kelas tes nested. Iku ora kasunyatan sing bakal kerep ketemu wong, nanging ana kamungkinan, supaya sampeyan kudu ngerti apa iku.
Kanggo nelpon metode kelas nested sadurunge deklarasi, sampeyan kudu nulis anotasi @Nested
. Tuladha:
public class AppTest {
@Nested
public class DevStagingEnvironment {
@Test
void testOnDev(){
System.setProperty("ENV", "DEV");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
}
}
@Nested
public class ProductionEnvironment {
@Test
void testOnProd(){
System.setProperty("ENV", "PROD");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
}
}
}
Rincian liyane bisa ditemokake ing dokumentasi resmi .
4.3 @ExtendWith
Anotasi liyane sing migunani yaiku @ExtendWith
. Paling kamungkinan, sampeyan bakal kerep ketemu dheweke, supaya katon ing liyane rinci.
JUnit minangka kerangka kuat sing ngidini sampeyan nulis macem-macem plugin (ekstensi) kanggo kustomisasi fleksibel karya sampeyan. Sawetara ekstensi bisa ngumpulake statistik babagan tes, liyane bisa niru sistem file ing memori, liyane bisa niru kerja ing server web, lan liya-liyane.
Yen kode sampeyan mlaku ing framework (contone, Spring), meh mesthi framework iki ngatur nggawe lan konfigurasi obyek ing kode sampeyan . Mulane, plugin tes khusus dibutuhake. Tuladha:
Conto 1. Ekstensi kasebut WebServerExtension
liwat metode tes sing diarani URL
supaya bisa digunakake kanthi bener.
@Test
@ExtendWith(WebServerExtension.class)
void getProductList(@WebServerUrl String serverUrl) {
WebClient webClient = new WebClient();
// Use WebClient to connect to web server using serverUrl and verify response
assertEquals(200, webClient.get(serverUrl + "/products").getResponseStatus());
}
Iki carane tes biasane miwiti nyoba kode sing bisa digunakake karo kerangka Spring:
@ExtendWith(SpringExtension.class)
@ExtendWith(MockitoExtension.class)
class TestServiceTest {
@MockBean
TestService service;
@Test
void test() {
assertNotNull(service); // Test succeeds
}
}
SpringExtension
nggawe versi test saka framework Spring, nanging MockitoExtention
ngijini sampeyan kanggo nggawe obyek palsu. Obyek palsu minangka topik sing menarik banget, kita mesthi bakal ndemek, nanging mengko.
4.4 @Wanci entek
Ayo rampungake kuliah iki kanthi anotasi cilik lan menarik @Timeout
. Iku ngidini sampeyan nyetel wektu kanggo mbukak test. Yen tes njupuk wektu luwih saka sing ditemtokake ing anotasi, banjur dianggep gagal.
class TimeoutDemo {
@Test
@Timeout(value = 100, unit = TimeUnit.MILLISECONDS)
void failsIfExecutionTimeExceeds100Milliseconds() {
// test will fail if it takes more than 100 milliseconds
}
}
Iki mungkasi ceramah kita.
GO TO FULL VERSION