C:
Testien kirjoittaminen
Miten:
Vaikka C:ssä ei ole sisäänrakennettua testauskehystä kuten joissakin muissa kielissä, voit silti kirjoittaa tehokkaita testejä käyttäen assert.h-tiedostoa yksinkertaisiin väittämiin tai integroida kolmannen osapuolen kehyksiä, kuten CUnit tai Unity, rakenteellisempaan testaukseen. Tässä on perusesimerkki assert.h:n käytöstä testattaessa funktiota, joka lisää kaksi kokonaislukua:
#include <assert.h>
#include "my_math.h"
void test_addition() {
assert(add(1, 2) == 3);
assert(add(-1, -2) == -3);
assert(add(0, 0) == 0);
printf("Kaikki yhteenlaskutestit läpäisty.\n");
}
int main() {
test_addition();
return 0;
}
my_math.h
:ssa voi olla:
// Yksinkertainen yhteenlaskufunktio
int add(int a, int b) {
return a + b;
}
Testifunktion suorittaminen main
-funktiossasi tuottaa tulosteen:
Kaikki yhteenlaskutestit läpäisty.
Kattavamman testausasetuksen toteuttaminen käyttämällä kehystä kuten Unity vaatisi kehyksen sisällyttämistä projektiisi, jonka jälkeen kirjoittaisit testitapaukset samankaltaisesti, mutta hyödyntäisit kehyksen APIa väitteille ja testien suorittamiselle.
Syväsukellus
Testaus C:ssä on historiallisesti ollut manuaalista ja jonkin verran ad hoc -prosessia kielen matalan tason luonteen ja standardoidun testauskehyksen puutteen vuoksi. Tämä manuaalinen lähestymistapa johti usein vähemmän perusteellisiin testauskäytäntöihin verrattuna kieliin, joissa on sisäänrakennettu testaustuki. Koska C-kieli on ollut ratkaisevan tärkeä perustavanlaatuisten ohjelmistojärjestelmien kehityksessä, tämä muodollisten testauskehysten puute kannusti C-yhteisöä kehittämään kolmansien osapuolten ratkaisuja, kuten CUnit ja Unity.
Nämä työkalut, vaikka ovatkin ulkopuolisia standardi C-kirjastolle, tarjoavat toiminnallisuuden, joka on samankaltaista kuin muiden kielten testauskehykset, tarjoten rakenteellisen tavan määritellä, suorittaa ja arvioida testejä. Ne auttavat siltaamaan kuilun C:n tehokkaan järjestelmätason pääsyn ja nykyaikaisen kehityskäytännön, automatisoidun testauksen, välillä. On huomionarvoista, että vaikka nämä työkalut huomattavasti parantavat testausprosessia C:ssä, ne voivat tuoda oppimiskäyrän ja lisätä projektin perustamisen monimutkaisuutta verrattuna kieliin, joissa on integroitu testaustuki. Niinpä projekteille, joissa luotettavuus ja ylläpidettävyys ovat ensiarvoisen tärkeitä, sijoittaminen asianmukaisen testausympäristön perustamiseen C:ssä on hyvin perusteltua, jopa mahdollisten vaihtoehtojen valossa.