如何为R CMD检查设置testthat?

时间:2013-07-11 14:15:21

标签: r testthat

显然有两种方法可以将testthatR CMD check进行整合。我无法上班。

方法#1 :(可能已弃用)

根据devtools wiki

  

开发包时,将测试放在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警告与此无关,但我可以根据要求提供更多详细信息。

方法#2 :(前沿)

根据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的解决方案,但我会选择其中一种方法!

1 个答案:

答案 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)来电。