Discuss / Java / 能否也介绍下Spock呢?

能否也介绍下Spock呢?

Topic source

Spock是我觉得最优雅的Java测试框架了,它的语法上就让人十分惊喜,老师能否也介绍下Spock测试框架呢?

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

他的语法决定了:没人用

https://tech.meituan.com/2021/08/06/spock-practice-in-meituan.html 美团他们在用。Spock写测试感觉在语法上和asset输出上比JUnit友好太多了,而且data driven testing编写也很方便,自带mock(虽然可能比较简陋),总体上感觉比JUnit更好用

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

美团有一万人的研发,是大部分都用,还是少数在用?

Groovy很早就有了,一直普及不了

花时间细细研究了一下Spock的文档。觉得这玩意真的是牛逼,并不应该带着有色眼镜去看它,仅仅用了Groovy这个“小众”的语言就否定它?而且Groovy在编程语言趋势排行榜是逐年稳步上升的,目前已经排进前20名了,还在小步攀升中,已经非常亮眼了,说明在世界编程语言上并不“小众”,国外还是有相当多的拥趸的,要知道被各种吹捧的Kotlin也不过排在30名之外。况且Groovy对于Java程序员来说上手几乎没有任何难度,基本可以当作Java超集来对待,几乎所有的Java语法都是合法的Groovy语法。

言归正传,Spock适用了下,并不是因为它使用Groovy DSL有多么亮眼,而是它的框架设计上就非常有可读性,不需要JUnit各种注解,直接继承Specification这个Class就会将内部的方法自动识别为测试用例,而且方法名就是测试用例,非常直观,还支持中文.

void '1 + 1 应该等于 2'() {
    expect:
    1 + 1 == 2
}

不需要像JUnit需要各种调用assert方法来断言,它每一行的truthy验证就是assert,更不用提还有增强型的assert,出现了测试失败可以非常直观的看到链式调用中每个环节的变量值,非常方便。

还有更好用的数据驱动测试DSL,简直不要太爽。决定了,以后决定就用Spock了

---

#6 Created at ... [Delete] [Delete and Lock User]

你爱用就自己用呗 非要到这儿bbbbb

F≠ma

#7 Created at ... [Delete] [Delete and Lock User]

本来就小众的东西,非要在入门教程装13是吧


  • 1

Reply