unit-testing - 如何运行 'go test' 并包含单元测试文件但排除其他测试文件

标签 unit-testing go

<分区>

我正在尝试在现有的 Go 项目上自动运行单元测试。它已经有很多现有的测试,这些测试可以做非单元测试的事情,比如联系外部服务和写入数据库。我想使用命名约定从自动化中排除这些测试文件。假设项目的结构是这样的:

gopath/
|-package1.go
|-package1_unit_test.go
|-package1_e2e_test.go
|-package2/
  |-package2.go
  |-package2_unit_test.go
  |-package2_e2e_test.go

我可以运行 go test ./... 来运行所有测试。如果我在单元测试的名称中包含“UnitTest”,我可以运行 go test ./... -run UnitTest 但这仍然会在 e2e 测试中运行启动代码。我需要它来完全忽略那些文件。有人建议运行 go test $(go list ./... | grep -v/e2e/) 但是 go list 输出的是目录名,而不是文件名,所以这不会'工作。

是的,理想情况下,e2e 测试应该放在不同的目录中,而不依赖于包的内部结构,但不幸的是,我的同事不是这样写的。我现在正在寻找快速修复方法!

最佳答案

您可以使用构建标签将构建(包括测试)限制为特定文件子集:https://dave.cheney.net/2014/09/28/using-build-to-switch-between-debug-and-release

例如,您可以将 //+build integration 放在集成测试文件的顶部,然后只有在运行 go test -tags integration 时才会构建和执行这些文件

关于unit-testing - 如何运行 'go test' 并包含单元测试文件但排除其他测试文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958704/

相关文章:

postgresql - 连接时 Gorm + Docker 错误

azure - 在 azure 上为 https 配置 golang rest api 应用程序

ruby-on-rails-3 - Rails数据库测试和清除

python - 在 python 中模拟 zipfile

python - django 中模板的自定义加载器的单元测试用例存在问题

unit-testing - 在进行 TDD 时,何时实现新的模拟依赖项?

go - 转换具有单个混合数据类型数组的单个字符串

java - 使用 CouchBase-Lite 移动设备进行单元测试,无需 Android 应用程序上下文

performance - Go:通过 slice slice (二维 slice )访问数组时出现意外性能

go - 为什么golang软件包bcrypt在哈希密码后能够检索盐?