【发布时间】:2016-01-01 02:57:06
【问题描述】:
我正在使用testthat 来检查我的包中的代码。我的一些测试是针对基本功能的,例如构造函数和 getter。其他的则是建立在基本功能之上的复杂功能。如果基本测试失败了,那么复杂的测试也会失败,所以没有必要进一步测试。
是否可以:
- 确保始终先完成基本测试
- 使测试失败停止测试过程
【问题讨论】:
标签: r unit-testing testthat
我正在使用testthat 来检查我的包中的代码。我的一些测试是针对基本功能的,例如构造函数和 getter。其他的则是建立在基本功能之上的复杂功能。如果基本测试失败了,那么复杂的测试也会失败,所以没有必要进一步测试。
是否可以:
【问题讨论】:
标签: r unit-testing testthat
要回答您的问题,我认为只能通过对您的 test-*.R 文件进行适当的字母数字命名来确定它。
来自testthat 源,这是 test_package 通过 test_dir 调用的函数来获取测试:
find_test_scripts <- function(path, filter = NULL, invert = FALSE, ...) {
files <- dir(path, "^test.*\\.[rR]$", full.names = TRUE)
不管怎样,让复杂的任务先失败有什么问题?
【讨论】:
要测试的最近(ish)开发是parallel test processing
这可能不适合您的情况,因为听起来您可能在测试之间存在复杂的相互依赖关系。如果您可以隔离您的测试(无论如何我认为这将是更常见的情况),那么并行处理是一个很好的解决方案,因为它应该加快整体处理时间,并且可能会在“慢”之前向您展示“快速”测试失败测试已完成。
【讨论】:
关于测试顺序,您可以使用说明文件中的 testthat 配置来确定测试顺序(按文件) - 正如文档所建议的那样
默认情况下 testthat 按字母顺序启动测试文件。如果您有一些测试文件比其他文件花费的时间更长,那么这可能不是最佳顺序。理想情况下,慢速文件会首先启动,因为整个测试套件将花费至少与其最慢的测试文件一样多的时间。您可以使用说明中的 Config/testthat/start-first 选项更改顺序。例如 testthat 当前有:
Config/testthat/start-first: watcher, parallel*
【讨论】: