简体   繁体   English

如何运行测试包的测试

[英]How to run a package's testthat tests

For a given installed package, how do I run its testthat tests?对于给定的安装包,我如何运行它的 testthat 测试? I'm not a developer of the installed package, I'm a user.我不是安装包的开发者,我是用户。 I just want to run its test suite to confirm its tests pass in my environment.我只想运行它的测试套件以确认它的测试在我的环境中通过。 I've tried test_check and test_package but I see errors.我试过test_checktest_package但我看到了错误。

To be more specific, I know its test suite fails and I want to run the tests in an interactive R session so I can debug it.更具体地说,我知道它的测试套件失败了,我想在交互式 R 会话中运行测试,以便我可以调试它。

> require(eplusr)    # choice of package unimportant. Any using testthat will do.
Loading required package: eplusr
> require(testthat)
Loading required package: testthat
> test_check("eplusr")
Error in test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,  : 
  No matching test file in dir
> test_package("eplusr")
Error: No tests found for eplusr


> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.1 LTS

Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8      
 [8] LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

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

other attached packages:
[1] testthat_2.0.0 eplusr_0.9.1  

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.18      magrittr_1.5      units_0.6-0       hms_0.4.2         progress_1.2.0    uuid_0.1-2        bit_1.1-14        debugme_1.1.0     R6_2.2.2          rlang_0.2.2      
[11] stringr_1.3.1     blob_1.1.1        tools_3.5.1       data.table_1.11.5 cli_1.0.0         DBI_1.0.0         withr_2.1.2       bit64_0.9-7       assertthat_0.2.0  digest_0.6.16    
[21] tibble_1.4.2      crayon_1.3.4      processx_3.2.0    readr_1.1.1       callr_3.0.0       later_0.7.4       base64enc_0.1-3   ps_1.1.0          fasttime_1.0-2    memoise_1.1.0    
[31] RSQLite_2.1.1     stringi_1.2.4     pillar_1.3.0      compiler_3.5.1    prettyunits_1.0.2 lubridate_1.7.4   pkgconfig_2.0.2  

R doesn't install the testthat tests by default. R 不安装默认情况下测试的测试。 To do so try :为此,请尝试:

install.packages('eplusr', INSTALL_opts="--install-tests", type='source')

Then, either:然后,要么:

testthat::test_package('eplusr')

or alternatively using the built-in testInstalledPackage :或者使用内置的testInstalledPackage

tools::testInstalledPackage('eplusr')

You can't (unless you reinstall overriding default behaviour as shown in Brodie's answer).您不能(除非您重新安装覆盖默认行为,如 Brodie 的回答所示)。

It's a design flaw^Hchoice.这是一个设计缺陷^ Hchoice。 testthat , in all its wisdom, decided to not install tests by default by enforcing the placement in the tests/ directory. testthattestthat ,决定通过强制放置在tests/目录中来默认安装测试。 R offers an option to override it (as shown) which is generally not turned on. R 提供了一个选项来覆盖它(如图所示),该选项通常不会打开。 Hence the dilemma.因此陷入了困境。

Of course, RUnit did it correctly all along having tests below inst/ .当然, RUnit一直在inst/进行测试, RUnit一直是正确的。 So if a package uses RUnit you can run its tests once installed.所以如果一个包使用RUnit你可以在安装后运行它的测试。 Without having to reinstall it.无需重新安装它。

Edit: 1 1/2 years later, many of us now use the tinytest package which arrived within the last year.编辑: 1 1/2 年后,我们中的许多人现在都使用去年推出的tinytest包。 Among other advantages, also allows very easy testing of installed packages.除其他优点外,还可以非常轻松地测试已安装的软件包。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM