2010-03-30 17 views
45

R ist eine Statistik-Programmiersprache. Teil von R ist die Verwendung von Paketen, die selbst in der R-Sprache geschrieben sind. Zu den bewährten Methoden der Programmierung gehört die Verwendung von Komponententests, um die Funktionen in diesen Paketen zu testen, während sie geschrieben werden und wenn sie verwendet werden.Was ist der aktuelle Status der Unit-Test-Unterstützung in der R-Sprache

Ich kenne ein paar Pakete für Unit-Tests innerhalb von R, wobei diese

Ich bin interessiert zu wissen;

Gibt es andere Pakete da draußen? Sind diese Pakete angesichts der Erfahrung von Menschen in verschiedenen Dingen ausgezeichnet? Was ist der aktuelle Stand der Technik bei Unit-Tests für R?

Antwort

30

Unit-Tests scheint mehr oder weniger ein Problem gelöst zu sein, so dass alle drei Pakete werden wahrscheinlich für Ihre Bedürfnisse ausreichen. Es gibt jedoch feine Unterschiede zwischen ihnen:

RUnit basiert auf xunit, und als solches ist leicht zu verstehen, wenn Sie irgendwelche Versionen aus anderen Sprachen verwendet haben.

svUnit verwendet die gleichen Tests wie RUnit, enthält aber eine grafische Benutzeroberfläche zur interaktiven Verwendung.

testthat ist nicht kompatibel mit, aber enthält viele der gleichen Funktionen und kann prüfen, nur Tests auf Dateien, die nicht geändert haben, führen, die zum Testen großer Projekte nützlich ist.


Einige Jahre später ...

RUnit und svUnit haben noch keine Schecks für Nachrichten und Warnungen sowie Test-Caching und scheinen nicht unter viel Entwicklung zu sein, so testthat sollte Ihre erste Wahl für neue Projekte sein. Sie können RUnit Tests in testthat Tests mit meinem runittotestthat Paket konvertieren.

+1

" svUnit "kann auch eine Ausgabe bereitstellen, die von dem Tool für kontinuierliche Integration [Hudson] (https://hudson.dev.java.net/) verstanden wird. – mariotomo

+1

Es gibt jetzt auch ** [unitizer] (https://github.com/brodieG/unitizer) **, allerdings noch in der Beta und nur github ('devtools :: install_github (" brodieg/unitizer ")'). Es unterscheidet sich ziemlich von den bestehenden Frameworks, da es Testausdrücke und die resultierenden Objekte speichert, um einfache Regressionsüberprüfungen zu ermöglichen. – BrodieG

6

Hier sind ein paar Dinge, die ich von Google gefunden habe.

Dieses Thema wurde auf der der Mailing-Liste here diskutiert, die die obigen Pakete erwähnte. Es scheint, dass RUnit und svunit den gleichen Testcode ausführen werden, aber Runit hat auch Tracking- und Code-Coverage-Funktionen.

Ein Vergleich der beiden ist auch auf der R-Wiki unter http://rwiki.sciviews.org/doku.php?id=developers:runit

+0

über die "Code Coverage" von RUnit angeboten, überprüfen Sie [diese Nachricht] (https://sourceforge.net/mailarchive/message.php?msg_name=474C639E.5080900%40epigenomics.com). Es ist ab November 2007, aber es steht immer noch. – mariotomo

+0

@Mariotomo: Dieser Link scheint nicht mehr zu funktionieren. Irgendwelche Kommentare oder Updates? – Iterator

+0

besser als eine direkte Verbindung, dies ist der Weg, um die Nachricht zu finden. Es ist in der 'runit-help' Mailingliste des' runit' Projektes in sourceforge.net. es ist vom Autor von 'runit' und timestamped 2007-11-27 18:36.»Nachdem Sie das gesagt haben, beachten Sie bitte, dass der inspect-Mechanismus nicht stark genutzt und getestet wird, da er eher unpraktisch ist, da immer nur ein Funktionsaufruf verfolgt werden kann. Dies ist bei Weitem kein Code-Coverage-Tool. " – mariotomo

Verwandte Themen