【发布时间】:2014-11-15 22:01:26
【问题描述】:
在 GoLang(作证)中分离单元测试和集成测试是否有既定的最佳实践?我混合了单元测试(不依赖任何外部资源,因此运行速度非常快)和集成测试(确实依赖任何外部资源,因此运行速度较慢)。所以,当我说go test 时,我希望能够控制是否包含集成测试。
最直接的技术似乎是在 main 中定义一个 -integrate 标志:
var runIntegrationTests = flag.Bool("integration", false
, "Run the integration tests (in addition to the unit tests)")
然后在每个集成测试的顶部添加一个 if 语句:
if !*runIntegrationTests {
this.T().Skip("To run this test, use: go test -integration")
}
这是我能做到的最好的吗?我搜索了 testify 文档,看看是否有命名约定或为我完成此任务的东西,但没有找到任何东西。我错过了什么吗?
【问题讨论】:
-
我认为 stdlib 使用 -short 来禁用影响网络的测试(以及其他长期运行的东西)。否则,您的解决方案看起来不错。
-
-short 是一个不错的选择,您的自定义构建标志也是如此,但您的标志不必在 main 中。如果你在函数之外将 var 定义为
var integration = flag.Bool("integration", true, "Enable integration testing."),则该变量将显示在包范围内,并且标志将正常工作
标签: unit-testing go integration-testing testify