显然有两种方法可以将testthat
与R CMD check
进行整合。我无法上班。
开发包时,将测试放在inst / tests中然后 创建一个文件tests / run-all.R(注意它必须是大写字母R), 其中包含以下代码:
library(testthat)
library(mypackage)
test_package("mypackage")
这将评估您在包中的测试 命名空间(所以你可以测试非导出的函数),它会抛出 如果有任何测试失败,则会出错。这意味着你会看到 除非全部报告,否则测试失败和R CMD检查的完整报告将不会通过 测试通过。
整个套餐是here。它是两个文件:
## 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警告与此无关,但我可以根据要求提供更多详细信息。
根据README file of the testthat
repository:
现在,推荐练习是将测试放在tests / testthat中,并且 确保运行R CMD检查,然后输入以下代码 测试/测试all.R:
library(testthat)
test_check(yourpackage)
所以我确保安装了最新版本的testthat:
> install_github("testthat")
然后改变了包裹。您可以获得此版本here。我将这两个文件修改为
## 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检查仍然没有运行测试:
$ 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的解决方案,但我会选择其中一种方法!
答案 0 :(得分:14)
您没有tests
目录。 test-all.R
应位于minimalbugexample/tests/test-all.R
。
然后,对于方法#1,您的实际测试会进入minimalbugexample/inst/tests
,对于方法#2,您的实际测试会进入minimalbugexample/tests/testthat/
。
对于方法#2,test-all.R
文件应使用test_check(yourpackage)
而不是test_package(yourpackage)
,并且不再需要library(yourpackage)
来电。