Testen von Testtests in RStudio

8

Ist es möglich, den Debugger in RStudio aufzurufen, wenn testthat tests ausgeführt werden? Ich war nicht in der Lage, ein Setup zu finden, das dies erlaubt (verschiedene Kombinationen von "nutze devtools Paketfunktionen, wenn verfügbar" in den Einstellungen, indem du die Option "Testpaket" im Menü "Build - & gt; More" aktivierst test() in der Konsole, in browser() Aufrufe, etc.) gesetzt, aber noch keinen Weg gefunden.

Ich merke auch, dass ich beim Testen ziemlich verloren gehe, nicht sicher bin, ob der laufende Code in den Systembibliotheken installiert wurde (indem ich 'Build & amp; Reload' mache), oder in situ aus dem lokalen R -Verzeichnis oder was - manchmal beschwert sich RStudio, dass ein Breakpoint erst gesetzt werden kann, wenn das Paket neu erstellt wurde (so vermute ich das erstere) oder nicht (so vermute ich das letztere). Ich bin mir nicht sicher, ob dieses Problem eng mit meiner Hauptfrage zusammenhängt oder nicht.

Ohne eine Möglichkeit zu finden, in den Debugger zu gelangen, gebe ich den Testcode in die Konsole & amp; Ich arbeite sehr ad hoc und schiebe meine TDD-Gewohnheiten in den Fuß. Daher wäre jeder Rat gefragt - wenn es nicht möglich ist, den Debugger aufzurufen, irgendwelche vorgeschlagenen Problemumgehungen?

Ich führe RStudio Version 0.99.447 auf OS X, im lokalen Modus, mit R 3.2.1.

Bearbeiten - Ich würde auch gerne mehr Hintergrundinformationen über die Optionen kennen, z. "Option X wird das Debuggen niemals unterstützen, da es in einem gegabelten Prozess ausgeführt wird, versuchen Sie stattdessen diese andere Option Y."

Update - da ich hier keine Antworten hatte, habe ich auch bei Ссылка (wo ich auch keine Antworten hatte).

    
Ken Williams 21.07.2015, 20:16
quelle

1 Antwort

7

Folgendes funktioniert für mich:

  1. Fügen Sie einen Aufruf von browser() irgendwo innerhalb des Tests ein, den Unit-Tests ausführen.
  2. Führen Sie devtools::test() von der RStudio-Konsole aus (anstatt den Menüeintrag "Testpaket" auf der Benutzeroberfläche zu verwenden)

Wenn der Test-Runner dann den Aufruf browser() erreicht, sollten Sie die Umgebungsbrowser und durch den Code gehen.

Ich habe keinen Weg gefunden, um einen Test zu bekommen, der an Haltepunkten stoppt, aber browser() Aufrufe einzufügen ist ein ziemlich naher Ersatz.

Um absolut sicher zu gehen, dass Sie beim Laden von Paketen von einem konsistenten Zustand ausgehen, können Sie RStudio schließen, erneut öffnen, "Clean and rebuild" ausführen und dann devtools::test()

Wenn Sie schließlich in einem RStudio-Paket arbeiten, sollten Sie den folgenden Ratschlag von RStudio-Unterstützung :

  

Um in Ihrem Paket effektiv zu debuggen, sollten Sie auch sicherstellen, dass Ihr Paket mit der Option --with-keep.source kompiliert wird. Diese Option ist die Standardeinstellung für neue Pakete in RStudio. Wenn Sie es manuell einstellen müssen, finden Sie es unter Extras - & gt; Projektoptionen - & gt; Build Tools.

    
alev 04.08.2015 01:02
quelle