【问题标题】:testthat pattern for long-running teststestthat 模式用于长时间运行的测试
【发布时间】:2014-10-25 01:43:12
【问题描述】:

我有一堆测试,我不希望它们在 CRAN 检查或 Travis CI 构建期间运行。它们要么长时间运行,要么可能导致写入网络数据库的事务/并发冲突。将它们(从 R CMD 检查测试中)分离出来的哪种方法最适合 testthat

我应该将这些测试放在单独的文件夹中吗?我应该标记他们的文件名并使用正则表达式吗? (例如Using filter argument in test_package to skip tests@Jeroen)

http://cran.r-project.org/web/packages/policies.html:

可以将长时间运行的测试和小插图代码设为可选 检查,但一定要确保剩下的检查执行所有 包的功能。

【问题讨论】:

  • 如果您将它们放在测试中的另一个目录中,那么您仍然可以使用test_dir() 手动测试它们,但它们不会使用test()R CMD check 运行。例如。 R6 有一些手动测试:github.com/wch/R6/tree/master/tests
  • 我喜欢 @GaborCsardi,以及测试是如何包含在一起的,但区别在于 test()test_dir()
  • @GaborCsardi 这正是我想要的,它worked well 满足我的包裹需求。如果您将评论更改为答案,我希望您的回复功劳。

标签: r cran testthat


【解决方案1】:

仅供参考:testthat 0.9 现在带有 skip() 功能。

但是,我似乎无法弄清楚如何/在哪里使用它。放入我的test_that() 函数中,测试无论如何都会运行。如果你把它放在testthat() 之前,那么skip() 会抛出一个错误。

【讨论】:

  • 感谢您的提及——我前几天看到了发布公告。在测试函数中,我立即添加了testthat::skip_on_cran()。它非常适合我的一些测试,因为我想要一些手动测试的主要原因是如果服务器当时不活跃,它不会被 CRAN 拒绝。我真的不在乎 Travis-CI 或 R-Forge 检查是否失败,因为它很容易重新运行。
  • 您能告诉我,您究竟是如何使用skip() 和/或skip_on_cran() 的吗?在 RStudio 中运行 test_package()CRTL+SHFT+T 时,我需要将它放在哪里才能跳过特定的测试?
  • 这里是test code 的链接。要运行它,我要么使用CTRL+SHIFT+E 检查包,要么只使用test_results_checked <- devtools::test() 运行测试。
  • 谢谢伙计。我就是这样做的,由于某种原因它不起作用,但现在它起作用了;-) 一定是别的东西
  • 请注意,跳过(至少在当前的开发版本中)需要一个消息参数。例如。在test_that( 里面使用if (is.friday(today())) skip("Not today.")
【解决方案2】:

如果您将它们放在tests 内的另一个目录中,那么您仍然可以使用test_dir() 手动测试它们,但它们不会使用test()R CMD check 运行。

例如R6 有一些手动测试:https://github.com/wch/R6/tree/master/tests

【讨论】:

    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2016-01-30
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多