15

I am using testthat to check the code in my package. Some of my tests are for basic functionality, such as constructors and getters. Others are for complex functionality that builds on top of the basic functionality. If the basic tests fail, then it is expected that the complex tests will fail, so there is no point testing further.

Is it possible to:

  1. Ensure that the basic tests are always done first
  2. Make a test-failure halt the testing process
4

3 回答 3

11

要回答您的问题,我认为只能通过对test-*.R文件进行适当的字母数字命名来确定它。

testthat源代码来看,这是 test_package 通过 test_dir 调用以获取测试的函数:

find_test_scripts <- function(path, filter = NULL, invert = FALSE, ...) {
  files <- dir(path, "^test.*\\.[rR]$", full.names = TRUE)

无论如何,让复杂的任务首先失败有什么问题?

于 2015-10-04T12:21:29.807 回答
0

关于测试顺序,您可以在说明文件中使用 testthat 配置来确定测试顺序(按文件) - 正如文档所建议的那样

默认情况下 testthat 按字母顺序启动测试文件。如果您有一些测试文件比其他文件花费的时间更长,那么这可能不是最佳顺序。理想情况下,慢速文件会首先启动,因为整个测试套件至少需要与其最慢的测试文件一样多的时间。您可以使用说明中的 Config/testthat/start-first 选项更改顺序。例如 testthat 当前有:

Config/testthat/start-first: watcher, parallel*

文档

于 2021-12-07T12:42:03.793 回答
0

最近的(ish)测试开发是并行测试处理

这可能不适合您的情况,因为听起来您可能在测试之间存在复杂的相互依赖关系。如果您可以隔离您的测试(无论如何我认为这将是更常见的情况),那么并行处理是一个很好的解决方案,因为它应该加快整体处理时间,并且可能会在“慢”之前向您显示“快速”测试失败测试已经完成。

于 2021-11-25T10:11:10.343 回答