2014-08-31 10 views
12

Ich habe eine Reihe von Tests, die ich nicht will, dass sie während CRAN-Prüfungen oder Travis CI-Builds laufen. Sie sind entweder langwierig oder sie können dazu führen, dass Transaktions-/Nebenläufigkeitskonflikte in eine Netzwerkdatenbank geschrieben werden. Welcher Ansatz, sie zu trennen (von den R CMD Check-Tests), funktioniert am besten mit testthat?testdieses Muster für lang andauernde Tests

Sollte ich diese Tests in einen separaten Ordner legen? Sollte ich ihren Dateinamen markieren und einen Regex verwenden? (ZB Using filter argument in test_package to skip tests von @Jeroen)

http://cran.r-project.org/web/packages/policies.html:

Langlauftests und Vignette-Code kann für Prüfung optional vorgenommen werden, aber sicher, dass die Kontrollen, die noch übrig sind, haben alle die Eigenschaften Ausübung das Paket.

+1

Wenn Sie sie innerhalb von Tests in ein anderes Verzeichnis einfügen, können Sie sie weiterhin manuell mit 'test_dir()' testen, aber sie werden nicht mit 'test()' oder 'R CMD check' ausgeführt. Z.B. R6 hat einige manuelle Tests: https://github.com/wch/R6/tree/master/tests –

+0

Ich mag das @GaborCsardi, und wie die Tests zusammen enthalten sind, aber unterschieden sich durch 'test()' und 'test_dir () '. – wibeasley

+0

@GaborCsardi das war genau das, was ich suchte, und es [hat gut funktioniert] (https://github.com/OuhscBbmc/REDCapR/commit/a93bf9e95c259068ba740596679f3943e7b521fa) für die Bedürfnisse meines Pakets. Wenn Sie Ihren Kommentar zu einer Antwort ändern, möchte ich Ihre Antwort gutschreiben. – wibeasley

Antwort

4

Wenn Sie sie in einem anderen Verzeichnis innerhalb tests setzen, dann können Sie immer noch mit test_dir() manuell testen, aber sie werden nicht mit test() oder R CMD check ausgeführt werden.

z. R6 hat einige manuelle Tests: https://github.com/wch/R6/tree/master/tests

7

FYI: testthat 0.9 kommt jetzt mit einer skip() Funktion.

Allerdings kann ich nicht herausfinden, wie/wo genau es zu verwenden. Wenn ich meine test_that() Funktion einsetze, läuft der Test trotzdem. Wenn Sie es vor testthat() setzen, gibt skip() einen Fehler aus.

+1

Danke für die Erwähnung, dass - ich sah die Veröffentlichung Ankündigung vor ein paar Tagen. Direkt innerhalb der Testfunktionen habe ich den Befehl 'testthat :: skip_on_cran()' hinzugefügt. Es ist eine gute Passform für einige meiner Tests, weil der Hauptgrund, warum ich einige manuelle Tests wollte, so dass es nicht von CRAN abgelehnt würde, wenn der Server dann nicht schwungvoll wäre. Es ist mir egal, ob die Travis-CI- oder R-Forge-Prüfungen fehlschlagen, weil sie einfach erneut ausgeführt werden können. – wibeasley

+5

Können Sie mir sagen, wie genau Sie 'skip()' und/oder 'skip_on_cran()' verwenden? Wo muss ich es setzen, um einen bestimmten Test zu überspringen, wenn 'test_package()' oder 'CRTL + SHFT + T' in RStudio ausgeführt wird? – Rappster

+2

Hier ist ein Link zum [Testcode] (https://github.com/OuhscBbmc/REDCapR/blob/80e9fad0eb8a42375d1291360032c4ee5ec12b97/tests/testthat/test-read_oneshot.R#L10). Um es zu starten, überprüfe ich entweder das Paket mit 'STRG + SHIFT + E' oder führe nur die Tests mit [' test_results_checked <- devtools :: test() '] (https://github.com/OuhscBbmc/REDCapR /blob/80e9fad0eb8a42375d1291360032c4ee5ec12b97/utility_scripts/refresh.R#L12). – wibeasley

Verwandte Themen