2010-03-30 25 views
45

R è un linguaggio di programmazione delle statistiche. Parte di R è l'uso di pacchetti, che sono scritti in linguaggio R. La best practice di programmazione include l'uso di test unitari per testare le funzioni all'interno di questi pacchetti mentre vengono scritti e quando vengono utilizzati.Qual è lo stato corrente del supporto per il test delle unità in linguaggio R

Sono a conoscenza di alcuni pacchetti per il test unità entro R, essendo questi

Sono interessato a conoscere;

Ci sono altri pacchetti là fuori? Data l'esperienza della gente, questi pacchetti eccellono in cose diverse? Qual è lo stato attuale dei test unitari per R?

risposta

30

Unit testing sembra essere più o meno un problema risolto, in modo che tutti e tre i pacchetti sarà probabilmente sufficiente per le vostre esigenze. Esistono tuttavia sottili differenze tra loro:

RUnit è basato su xunit e, come tale, è facile da capire se ne hai usato versioni da altre lingue.

svUnit utilizza gli stessi test di RUnit, ma include una GUI per facilitare l'uso interattivo.

testthat non è compatibile con entrambi, ma include molte delle stesse funzioni e può verificare solo l'esecuzione di test su file che non sono stati modificati, il che è utile per testare progetti di grandi dimensioni.


Diversi anni dopo ...

RUnit e svUnit ancora non hanno controlli per i messaggi e gli avvisi, né test di caching, e non sembrano essere sotto molto di sviluppo, in modo da testthat dovrebbe essere la tua prima scelta per nuovi progetti. È possibile convertire i test RUnit ai test testthat utilizzando il pacchetto runittotestthat.

+1

' svUnit' può anche fornire un output che è compreso dallo strumento di integrazione continua [Hudson] (https://hudson.dev.java.net/). – mariotomo

+1

C'è ora anche ** [unitizer] (https://github.com/brodieG/unitizer) **, sebbene sia ancora in beta e solo in github ('devtools :: install_github (" brodieg/unitizer ")'). È abbastanza diverso dai framework esistenti poiché memorizza le espressioni di test e gli oggetti risultanti per consentire facili controlli di regressione. – BrodieG

6

ecco alcune cose che ho trovato da Google.

Questo argomento è stato discusso sulla mailing list here che ha menzionato i pacchetti di cui sopra. Sembra che RUnit e svunit eseguano lo stesso codice di test, ma Runit ha anche funzioni di rilevamento e di copertura del codice.

Un confronto tra i due è anche sul wiki R alla http://rwiki.sciviews.org/doku.php?id=developers:runit

+0

sulla "copertura del codice" offerta da RUnit, controllare [questo messaggio] (https://sourceforge.net/mailarchive/message.php?msg_name=474C639E.5080900%40epigenomics.com). è del novembre 2007 ma continua a esistere. – mariotomo

+0

@mariotomo: quel collegamento sembra non funzionare più. Eventuali commenti o aggiornamenti? – Iterator

+0

meglio di un collegamento diretto, questo è il modo per trovare il messaggio. è nella mailing list 'runit-help' del progetto' runit' in sourceforge.net. è dell'autore di 'runit' e timestamped 2007-11-27 18:36.»Detto questo, si prega di notare che il meccanismo di ispezione non è pesantemente utilizzato e testato poiché è piuttosto poco pratico in quanto è possibile tracciare una sola chiamata alla volta. Questo è ben lungi dall'essere uno strumento di copertura del codice. « – mariotomo

Problemi correlati