显然,有两种方法可以将 testthat
与 R CMD check
集成。但我无法使任何一种方法生效。
方法1:(可能已过时)
根据devtools wiki的说法:
当开发一个包时,请将测试放在 inst/tests 中,并创建一个名为 tests/run-all.R 的文件(注意必须是大写 R),其中包含以下代码:
library(testthat)
library(mypackage)
test_package("mypackage")
这将在包命名空间中评估您的测试(因此您可以测试非导出函数),如果有任何测试失败,它将抛出错误。这意味着您将看到所有测试失败的完整报告,并且除非所有测试都通过,否则R CMD check 将无法通过。
整个软件包可在这里找到。其中包含两个文件:
## minimalbugexample/inst/tests/run-all.R
library(testthat)
library(minimalbugexample)
test_package('minimalbugexample')
并且
## minimalbugexample/inst/tests/test-use-Matrix-package.R
context("Intentional break")
expect_that( TRUE, equals(FALSE))
我的描述是
Package: minimalbugexample
Title:
Description:
Version: 0.1.1
Author: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Maintainer: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Depends:
R (>= 3.0.1),
Matrix (>= 1.0)
Suggests:
testthat
License: GPL
LazyData: true
Collate:
'minimalbugexample-package.r'
'use-Matrix-package.R'
安装完包之后,我可以顺利运行测试(它们会按照预期失败)。
> test_package('minimalbugexample')
Intentional break : 1
1. Failure: -------------------------------------------------------------------
TRUE not equal to FALSE
1 element mismatch
Error: Test failures
>
然而,R CMD check
并不运行测试。
$ R CMD check minimalbugexample_0.1.1.tar.gz
... snip ...
* checking PDF version of manual ... WARNING
WARNING: There was 1 warning.
See
‘/home/nathanvan/software/minimalbugexample.Rcheck/00check.log’
for details.
我认为PDF警告与此无关,但如有需要,我可以提供更多细节。
方法二:(最新)
现在,推荐的做法是将你的测试放在tests/testthat中,并通过在tests/test-all.R中添加以下代码来确保运行R CMD check:
library(testthat)
test_check(yourpackage)
因此,我确保安装了最新版本的testthat:
> install_github("testthat")
然后修改了包。你可以在这里获取此版本。我修改了两个文件。
## minimalbugexample/inst/tests/test-all.R
library(testthat)
test_check(minimalbugexample)
并且
## minimalbugexample/inst/tests/testthat/test-use-Matrix-package.R
context("Intentional break")
expect_that( TRUE, equals(FALSE))
将DESCRIPTION文件中的软件包版本更新为0.1.2后,我可以构建、安装并使用testthat
检查它,并获得与之前相同的输出。因此,就testthat
而言,它是有效的。
但是,R CMD check仍然无法运行测试:
$ R CMD check minimalbugexample_0.1.2.tar.gz
... snip ...
* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
WARNING: There was 1 warning.
See
‘/home/nathanvan/software/minimalbugexample.Rcheck/00check.log’
for details.
所以问题是:
我错在哪了?我更偏向于使用方法2的解决方案,但我会接受任何一种!
DESCRIPTION
中的Suggests:
中添加testthat
。具体操作请参考此链接:https://dev59.com/1WEi5IYBdhLWcg3wWLAS - Ari B. Friedman