2015-10-04 32 views
8

Sto usando testthat per controllare il codice nel mio pacchetto. Alcuni dei miei test sono per funzionalità di base, come costruttori e getter. Altri sono per funzionalità complesse che si basano sulla funzionalità di base. Se i test di base falliscono, allora si prevede che i test complessi falliranno, quindi non è necessario testare ulteriormente.È possibile determinare l'ordine di prova in testthat?

E 'possibile:

  1. Assicurarsi che i test di base sono sempre fatto prima
  2. Fai un test-fallimento arrestare il processo di test

risposta

5

Per rispondere alla tua domanda, I don' Penso che possa essere determinato diversamente dall'adeguata denominazione alfanumerica dei file test-*.R.

Da testthat fonte, questa è la funzione che test_package chiamate, tramite test_dir, per ottenere delle prove:

find_test_scripts <- function(path, filter = NULL, invert = FALSE, ...) { 
    files <- dir(path, "^test.*\\.[rR]$", full.names = TRUE) 

Cosa c'è di sbagliato con solo lasciando il compito complesso e non riescono prima, in ogni caso?

+0

* "Cosa c'è che non va ..." *? Il mio primo pensiero è "time to compute", alla ricerca di un fast-fail vice long-wait. (Uno dei miei progetti richiede inevitabilmente 15-20 minuti per eseguire tutti i test.Inoltre ho delle dipendenze tra i test: un test imposta l'ambiente, altri test riutilizzano i componenti.Trattare i test in più file è utile nel mio caso, ammettiamolo tutto.) – r2evans

+1

Punto giusto. È difficile ma è possibile dividere i test, solo alcuni dei quali vengono eseguiti con i test CRAN, se ciò è importante per te. L'esecuzione di una particolare suite di test richiede solo un argomento della riga di comando, ma non si integra affatto con Rstudio, e la condivisione del contenuto di test tra due gruppi, o l'utilizzo di testthat, richiede probabilmente solo tonnellate di manutenzione e interruzioni. Quindi sono d'accordo con te! –