DescribeTable功能是对TableDriven模式的友好支持,但它的原理是通过Entry在用例执行之前,通过反射机制来自动生成It方法,所以如果期望类似BeforeEach+It的原生组合来使用BeforeEach+Entry的话,可能在值类型的变量传递上,会不符合预期。其实,相较于DescribeTable+Entry的模式,我个人更倾向于通过方法+多个It的原生组合来写用例,虽然代码量显得有点多,但是用例表达的逻辑主题会更清晰,可读性较高。类似如下:
Ginkgo CLI的focus和skip命令非常好用,能够灵活的指定想执行或者排除的测试用例。不过要注意的是,focus和skip传入的是正则表达式,而适配这个正则的,是组成用例的所有的Container标题的组合(Suite+Describe+Context+It), 这些标题从外到里拼接成的完整字符串,所以使用时当注意。
都有谁在用Ginkgo?Ginkgo的官方文档非常详细,非常利于使用。另外,我们看到著名的容器云项目Kubernetes也是使用Ginkgo框架来编写其e2e测试用例。
最后,如果您也使用Go语言来编写测试用例,不妨尝试下Ginkgo。
Contact me ?Email: jinsdu@outlook.com
Blog:
Github: https://github.com/CarlJi