Gå til innhold

Unit-testing i ANSI C


Anbefalte innlegg

Vet noen om et bra, gjennomført (de jeg har funnet har vært så som så) rammeverk for unit-testing i ANSI C, på linje med det man finner i objektorienterte språk (Python, Smalltalk, C++ etc.)? Funderer på å skrive det jeg trenger selv; i den forbindelse, kan noen komme på noen ulemper med å bruke longjmp for å "feige ut" etter en feil (tror det vanligvis brukes exceptions for denslags)?

Lenke til kommentar
Videoannonse
Annonse

Svarer kjappt her,

<..>noen ulemper med å bruke longjmp for å "feige ut" etter en feil (tror det vanligvis brukes exceptions for denslags)?

Man må ta seg av ting allokert v.h.a. malloc vil jeg tro.

 

Desverre har jeg ikke noen erfaring med unit-testing-rammeverk i C, så lar være å nevne de jeg fannt på google o.l. :]

Endret av søppel
Lenke til kommentar

Jeg fant etterhvert ut av Check, er ikke så lenge siden det ble oppdatert heller (alltid en bonus). Noe jeg ikke hadde tenkt på er fatale kræsj (SIGABRT, SIGSEGV), Check ser ut til å løse dette ved å teste i separate prosesser. Lurer på hvordan Boost.Test fikser denslags?

 

Edit: Hrm .. Så vidt jeg kan se gjør Boost.Test alt i samme prosess, og fortsetter med neste test etter å ha fanget et fatalt signal (bruker siglongjmp faktisk). Noen anelse om hvorfor Check absolutt skal kjøre tester i separate prosesser, hvis det er fint mulig å fortsette etter en SIGSEGV?

Endret av A_N_K
Lenke til kommentar

Da var rammeverket implementert :_) Valgte å kjøre hver test i en separat prosess (vha. fork), med tanke på at et test-program kan korrumpere minnet (kjipe greier). Meningen er at koden skal være kryssplattform etterhvert, kan noen si meg hvordan man forker prosesser og fanger opp kræsj (illegal skriving til minne etc.) i Windows? Mener å huske at det mangler en ekvivalent til fork i Windows, og at folk gjerne bruker tråder istedet? Kan man opprette tråder med fullstendig separat adresserom?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...