第一模块:课程介绍
课程名称:新一代构建工具gradle
课程章节:4-8 自动化测试
主讲老师:skyding
第二模块:课程内容
了解使用gradle进行测试
第三模块:课程收获
Gradle测试
一些开源的测试框架比如JUnit,TestNG能够帮助你编写可复用的结构化的测试,为了运行这些测试,你要先编译它们,就像编译源代码一样。测试代码的作用仅仅用于测试的情况,不应该被发布到生产环境中,需要把源代码和测试代码分开来。
项目结构
在创建项目的时候,会自动带一个测试的目录
那么现在开始配置测试的依赖
在创建项目的时候,模板已经帮我们引入了测试的依赖
dependencies {
implementation 'ch.qos.logback:logback-classic:1.2.11'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
junit 是Java进行测试的工具。
包括和排除指定的测试
junit有一个include和exclude方法。这些方法可以用于指定哪些测试应该运行。
test {
include 'com.imooc.gradle/*'
useJUnitPlatform()
}
同理,可以使用exclude
来跳过不需要进行的测试
开始进行测试
先编写一个测试的代码:
使用@Test
注解来标记测试用例
点击右侧的绿色按钮开始进行测试。
很显然这个是失败的。
那么测试在gradle有什么作用呢?
gradle进行构建的时候,会执行测试任务,以便代码能够正确的执行。
点击右侧的build按钮来进行编译,结果会编译失败,因为有一个测试用例失败了。
23:29:36: 正在执行 'build'…
> Task :model:compileJava UP-TO-DATE
> Task :model:processResources NO-SOURCE
> Task :model:classes UP-TO-DATE
> Task :model:jar UP-TO-DATE
> Task :repository:compileJava UP-TO-DATE
> Task :repository:processResources NO-SOURCE
> Task :repository:classes UP-TO-DATE
> Task :repository:jar UP-TO-DATE
> Task :repository:assemble UP-TO-DATE
> Task :repository:compileTestJava UP-TO-DATE
> Task :repository:processTestResources NO-SOURCE
> Task :repository:testClasses UP-TO-DATE
> Task :repository:test FAILED
Test2 > test2() FAILED
java.lang.AssertionError at Test2.java:18
6 actionable tasks: 1 executed, 5 up-to-date
2 tests completed, 1 failed
现在把这个用例改对,然后再次执行build
现在,就成功编译了。
测试发现
那么gradle是怎么发现这些测试的代码的呢?
gradle会扫描所有的.class文件,在使用JUnit时,如果符合一下条件,这个类就会被使用Junit测试类
- 类或超类继承了TestCase或GroovyTestCase
- 类或超类使用@RunWith注解
- 类或超类包含以@Test注解的方法
- 使用TestNG时,我们扫描使用@Test注解的方法
总结
好的测试,对项目的质量至关重要,gradle对测试的集成,大大保证了项目的质量。