Ich schreibe einige Tests für ein R-Paket und möchte R CMD check
überprüfen, dass Funktionen die richtigen Warnungen für bestimmte Eingaben anzeigen. Aber ich kann nicht herausfinden, wie ich die Warnausgabe erfassen soll, damit ich sie testen kann.Wie schreibe ich einen Paket-Test in R, um zu sehen, ob die Warnung korrekt ausgelöst wird?
Also, wenn ich eine Funktion wie:
throwsWarning<-function(x){
if(x>0){
warning('Argument "x" is greater than zero, results may be incorrect')
}
# do something useful ...
}
ich wie ein etwas in meiner Testdatei wollen würde:
warningOutput <-try(throwsWarning(1))
if (warningOutput!='Argument "x" is greater than zero, results may be incorrect'){
stop('function "throwsWarning" did not produce correct warning when x>0')
}
Bisher habe ich gefunden mögliche Teillösungen durch options
Wechsel damit Warnungen als Fehler und die Umgebung mit einem trycatch
Block behandelt werden. Wird auch als Testwert von last.warning
betrachtet, aber das erscheint gefährlich, wenn die Warnung nicht ausgelöst wird (würde den vorherigen Wert testen). Scheint so, als müsste es eine einfache Möglichkeit geben, das zu tun, was ich vermisse?
Sie scheinen 'testthat' in Ihren Tests nicht zu verwenden. – Spacedman