Kuinka kirjoittaa yksikkötesti Golangiin?

Kuinka Kirjoittaa Yksikkotesti Golangiin



Jos olet Go-kehittäjä, tiedät kuinka tärkeää testaus on koodisi laadun varmistamiseksi. Kirjoittaminen yksikkötestit on olennainen osa kehitysprosessia, ja se voi auttaa havaitsemaan vikoja varhaisessa vaiheessa, mikä säästää aikaa ja rahaa pitkällä aikavälillä. Tässä artikkelissa keskustelemme kirjoittamisesta yksikkötestit Golangissa.

Mikä on yksikkötestaus?

Ensimmäinen askel on ymmärtää mitä yksikkötestaus tarkoittaa. Yksikkötestaus tarkoittaa pienten koodiyksiköiden tai moduulien testausprosessia sen varmistamiseksi, että jokainen niistä toimii odotetulla tavalla. Yksikkötestaus käytetään poistamaan ongelmia koodista, parantamaan koodin vakautta ja varmistamaan oikea koodi päivitettäessä. Ohjelmistojen testauksen alkuvaihe on yksikkötesti , jota seuraa käyttöliittymätesti ja integrointitesti.

Testauspaketti

Golangissa, yksikkötestaus suoritetaan paketilla nimeltä testaus . Paketti sisältää erilaisia ​​toimintoja, joiden avulla voimme testata koodiamme. Go-koodia voidaan testata automaattisesti testauspaketin avulla.







Esimerkkiohjelma testattavaksi

Tarvitsemme koodia testiemme analysoitavaksi ennen kuin voimme kirjoittaa mitään yksikkötestit . Luomme pienen ohjelman, joka lisää kaksi numeroa.



paketin pääasiallinen

tuonti (
'fmt'
)
funcAdd ( a int , b int ) int {
palata a + b
}

func main ( ) {
fmt. Println ( Lisätä ( 2 , 3 ) )
}

Yllä oleva koodi määrittelee Lisätä() funktio, joka lisää kaksi numeroa, a ja b , syöttää ja tulostaa tuloksen kokonaislukuna. Pääfunktio tekee vain numeroiden 2 ja 3 lisäämisen ennen tuloksen tulostamista.







Kirjoitusyksikkötestien yleissopimus liikkeellä

Jokaisella Go-projektilla tulee olla erillinen testitiedosto, joka sisältää kaikki kyseisen projektin testit. Tiedostolla tulee olla sama nimi kuin testattavalla tiedostolla ja sen pitäisi olla _test.go lisätään tiedostonimen loppuun. Jos esimerkiksi haluamme testata tiedostoa nimeltä calculator.go , meidän pitäisi nimetä testitiedostomme calculator_test.go .

Se on normaali käytäntö Mene testaamaan tiedostoja olla samassa paketissa tai hakemistossa kuin koodi, jota he arvioivat. Kun käytät go build -komentoa, kääntäjä ei luo näitä tiedostoja, joten sinun ei tarvitse huolehtia niiden näkymisestä käyttöönotoissa.



Kirjoittamaan a yksikkötesti Go, meidän on käytettävä testaus paketti. Voimme aloittaa jokaisen testifunktion sanalla Testata ja lisää sitten kuvaus siitä, mitä haluamme testata. Esimerkiksi, TestAddition tai Testivähennys . Voimme sitten kirjoittaa testikoodin, joka tarkistaa, palauttaako testattava funktio odotetut tulokset.

Go:ssa jokaisen testifunktion tulee alkaa lauseella t := testaus.T{}. Tämä lausunto luo uuden testaus objekti, jonka avulla voimme tarkistaa, onko testi läpäissyt vai epäonnistunut. Voimme sitten käyttää t.Errorf() toiminto tulostaa virheilmoituksen, jos testi epäonnistuu.

Kuinka kirjoittaa testikoodi?

Kun tulee yksikkötestien kirjoittaminen Gossa, on tärkeää aloittaa määrittämällä paketti, jota haluat testata. Testauspaketin tuonnin jälkeen voit käyttää erilaisia ​​paketin viemiä tyyppejä ja menetelmiä, mukaan lukien testaus.T tyyppi. Itse testauslogiikka kirjoitetaan sitten funktioon, joka alkaa avainsanalla 'Testata' jota seuraa kuvaava nimi, esim TestAdd() . Tässä funktiossa voit sisällyttää testin koodin ja kaikki väitteet, joita tarvitaan odotetun toiminnan tarkistamiseen.

Yhteenvetona voidaan todeta, että Go-testin ominaisuudet ovat seuraavat:

  • Yksi ja ainoa vaadittu parametri on t *testaus.T
  • Testaustoiminto alkaa sanalla Test ja sitä seuraa sitten isolla kirjaimella alkava sana tai lause.
  • Vian ilmoittamiseksi testaustoiminnon tulee kutsua jompaakumpaa t.Errorf tai t.Epäonnistui, ja lisävirheenkorjaustietojen tarjoamiseksi virhettä aiheuttamatta voidaan käyttää t.Logia.
  • Toimita virheettömät virheenkorjaustiedot käyttämällä t.Log-ohjelmaa.
  • Testit tallennetaan tiedostoihin, joissa on nimi foo_test.go , esimerkiksi, math_test.go .

Sulje tiedosto tallennuksen jälkeen.

paketin pääasiallinen

tuonti (
'testaus'
)

funcTestAdd ( t * testaus. T ) {
tulos := Lisätä ( 2 , 3 )
jos tulos != 5 {
t. Errorf ( 'Lisää(2, 3) = %d; haluan 5' , tulos )
}
}

The Lisätä() toiminto on testattu TestAdd() funktio, joka on määritelty tässä testissä. Se käyttää numeroita 2 ja 3 soittaakseen Lisää ja vahvistaa sitten, että tulos on 5. Jos tulos on pienempi kuin 5, tulostetaan virheilmoitus. t.Errorf() vedotaan.

Lopuksi on tärkeää tietää, että Gossa on sisäänrakennettu testaustyökalu nimeltä mene testiin. Tämä työkalu suorittaa kaikki projektin testit ja antaa raportin tuloksista. Käy testaamassa tulee kirjoittaa terminaaliin projektihakemistossa, jotta testit alkavat. Kaikki kyseisen hakemiston testit suoritetaan tuloksena.

< vahva > mene testiin < testata - tiedosto - nimi > _testata. mennä vahva >

Yksikkötestin tulokset

Tulos näyttää läpäistyt, epäonnistuneet tai ohitetut testitoiminnot.

PASS tai OK tarkoittaa, että koodi toimii tarkoitetulla tavalla. Sinä tulet vastaanottamaan FAIL jos testi epäonnistuu.

The _test.go suffiksi on ainoa, jonka go test -alikomento tarkistaa tiedostoista. Testaa tämän jälkeen kyseisistä tiedostoista erikoistoimintoja, kuten func TestXxx ja useita muita. Go testi rakentaa ja kutsuu nämä funktiot oikein, suorittaa ne, kerää ja raportoi tulokset ja lopuksi puhdistaa kaiken väliaikaisessa pääpaketissa.

Viimeinen vaihe on integroida testit kehitystyönkulkuusi. Paras käytäntö on suorittaa testit aina, kun sitoat koodisi arkistoon. Testien integrointi kehitystyönkulkuun varmistaa, että koodiasi testataan jatkuvasti ja kaikki ongelmat ratkaistaan ​​ennen käyttöönottoa.

Johtopäätös

Kirjoittaminen yksikkötestit on keskeinen osa ohjelmistokehitystä, koska se takaa, että koodisi on skaalautuva, toimiva ja tehokas. Go-testauskirjasto on vaivaton ja helppokäyttöinen. Sinun pitäisi pystyä luomaan Golang yksikkötestit korkealaatuisina noudattamalla yllä lueteltuja menettelyjä. Muista integroida testit kehitystyönkulkuun varmistaaksesi, että koodiasi testataan jatkuvasti ja kaikki ongelmat ratkaistaan ​​ennen käyttöönottoa.