21

显然有两种方法可以testthatR CMD check. 我也不能上班。

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

根据devtools wiki

开发包时,将测试放在 inst/tests 中,然后创建文件 tests/run-all.R(注意必须是大写的 R),其中包含以下代码:

library(testthat) 
library(mypackage)
test_package("mypackage") 

这将评估您在包命名空间中的测试(因此您可以测试未导出的函数),如果有任何测试失败,它将引发错误。这意味着您将看到完整的测试失败报告,除非所有测试都通过,否则 R CMD 检查不会通过。

整个包裹都在这里。其中有两个文件:

## 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
> 

但是 anR 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 文件testthat

现在,推荐的做法是将您的测试放在 tests/testthat 中,然后通过将以下代码放在 tests/test-all.R 中来确保 R CMD 检查运行:

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 的解决方案,但我会采取任何一个!

4

1 回答 1

14

你没有tests目录。 test-all.R应位于minimalbugexample/tests/test-all.R

然后你的实际测试进入minimalbugexample/inst/tests方法#1或minimalbugexample/tests/testthat/方法#2。

对于方法#2,test-all.R文件应该使用test_check(yourpackage)而不是test_package(yourpackage)并且library(yourpackage)不再需要调用。

于 2013-07-11T14:37:20.963 回答