2015-11-20 34 views
6

R paketimin testlerini yazmak için testthat paketini kullanıyorum. Talimatları izledim http://r-pkgs.had.co.nz/tests.html (inanıyorum). Test iskeletini kurmak içinR CMD'yi denetlerken R paket testleri bulunamadı

'u kullandım. tests/testthat'da bir test dosyası oluşturdum ve dosya adı test ile başlıyor. RStudio'da devtools::test() veya Ctrl + Shift + T çalıştırdığımda, testler başarıyla çalıştırılır, ancak ben R CMD check veya Ctrl + Shift + E, testthat paketimi bulamıyorum. Ben hatayı

> library(testthat) 
> 
> test_check("foo") 
Loading required package: foo 
Error in loadNamespace(name) : there is no package called 'foo' 
Calls: test_check ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous> 
In addition: Warning message: 
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : 
    there is no package called 'foo' 
Execution halted 

benim .Renviron dosyada R_LIBS_SITE ayarlayarak Kütüphanemin yolunu değiştirmek yapmak olsun. Bunun R CMD check'u çalıştırırken okunmadığından şüpheleniyorum, ancak bunun bir fark yaratması gerektiğini düşünmüyorum.

RStudio Konsolundan devtools::check()'u çalıştırdığımda, (tamamlanan testler dahil), ancak RStudio'da Check başarısızken başarılı bir şekilde tamamlanır.

Ben .libPaths() ve diğer bit yazdırmak için testthat.R bazı hata ayıklama ekledi: Paketin dizin geçici kütüphanede oluşturulduğunu görebilirsiniz

> library(testthat) 
> .libPaths() 
[1] "C:/Users/timk/AppData/Local/Temp/Rtmp841w0b/RLIBS_1790551706" 
[2] "C:/Program Files/R/R-3.2.2/library" 
> list.files(.libPaths()[1]) 
[1] "KernSmooth" "MASS"  "Matrix"  "boot"  "class" 
[6] "cluster" "crayon"  "digest"  "foo"  "foreign" 
[11] "lattice" "magrittr" "memoise" "mgcv"  "nlme" 
[16] "nnet"  "praise"  "rpart"  "spatial" "stringi" 
[21] "stringr" "survival" "testthat" 
> list.files(file.path(.libPaths()[1], "foo")) 
character(0) 
> list.files(file.path(.libPaths()[1], "testthat")) 
[1] "CITATION" "DESCRIPTION" "INDEX"  "LICENSE"  "MD5" 
[6] "Meta"  "NAMESPACE" "R"   "help"  "html" 
[11] "libs" 

Ancak paket boş. testthat dosya listesiyle karşılaştırın.

Ayrıca testthat (anonymizer) kullanan başka bir paketi indirmeyi denedim ve aynı hatayı alıyorum.

sessionInfo()

:

R version 3.2.2 (2015-08-14) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 8 x64 (build 9200) 

locale: 
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 LC_MONETARY=English_Australia.1252 
[4] LC_NUMERIC=C      LC_TIME=English_Australia.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] foo_0.1 testthat_0.11.0 

loaded via a namespace (and not attached): 
[1] magrittr_1.5 tools_3.2.2 roxygen2_5.0.0 Rcpp_0.12.1 crayon_1.3.1 memoise_0.2.1 stringi_1.0-1 
[8] stringr_1.0.0 digest_0.6.8 devtools_1.9.1 
+0

Birkaç gün önce 'adegenet'in bir dalı üzerinde bir kontrol gerçekleştiriyordum ve tüm cehennem kaybedildi. Kullanıcı çevre yoluna 'R_LIBS_USER 'ekledikten sonra işler başladı. '.libPaths()' iniz ne diyor? –

+0

Güzel bir soru. .libPaths() 'ı ve geçici kütüphanenin içeriğini göstermek için çıktı ekledim. Paket dizini oluşturuluyor, ancak boş. –

+0

Kullanıcı ortamına 'R_LIB_USER 'eklemeyi veya ilk (geçici) klasörü kaldırmayı denediniz mi? –

cevap

0

deneyin DESCRIPTION arasında Suggests: alanında testthat ekledi. R CMD CHECK, bir kontrol sırasında sadece o dosyada belirtilen paketleri kapsayacaktır.

+0

'testthat' DESCRIPTION' içinde. R'nin 'testthat' ı bulabildiğini ancak paketimi bulamamı ancak sadece RStudio kısayolunu kullandığımı düşünüyorum. Eğer "elle" çalıştırırsam, testler bulunur ve çalışır. –

+0

O zaman muhtemelen kendi github dosyalanması gereken bir RStudio böcek. – lionel

0

Sen hattını oluşturmak için testthat dosyasında

library(foo) 

unutmak gibi görünüyor. Bazı renowned examples'a bakarsanız, bu şekilde yaparlar