运行 使用没有包的 testthat 进行单元测试

Run unit tests with testthat without package

我有一个闪亮的应用程序,它使用了 4 个函数。我想测试这些功能,但它不是一个包。我应该如何构建我的代码?并在没有 devtools 的情况下执行这些测试?

如果你有几个没有包结构的函数,最好手动编写单个测试文件(因此使用一些简单的 if/error 捕获系统),然后用 Rscript test_file1.R 调用。

如果您开始使用包格式(建议进一步 'safe' 开发)并且您仍然不想使用 testthat,我建议您关注此博客 post: here

您可以使用 testthat::test_dir()testthat::test_file() 执行测试。既不依赖包中的代码,也不依赖于使用 devtools,只依赖 testthat 包。

对如何构建代码的要求很少。 如果是我,我会创建一个 tests 目录并在其中添加我的测试脚本,它看起来像:

|- my_shiny_app | |- app.R | |- tests | |- test_foo.R | |- test_bar.R

然后您可以 运行 使用 test_dir('tests') 进行测试,假设您在 my_shiny_app 目录中。

您的测试脚本将具有相同的 structure they have for packages 但您需要将 library() 调用替换为 source() 引用定义函数的文件。