为什么需要自动化测试

再接受一份前人六i下来的代码的时候,一份具有完善的自动化测试的代码,改完了跑一下自动化测试。代码维护成本低,bug会越来越少

  • 代码写完了
  • 怎么保证他是对的
  • 怎么保证他会永远对辖区
  • 长久看来,没有测试的代码质量是无法保证的

Java中的测试形态

TestNg

Junit

Junit4

Junit5

测试的基本形态

  • 再依赖中引入测试框架
  • Maven
    • 放在/src/test下的都是测试代码
    • 再test阶段会被执行
      • mvn test -Dest=TestCi*le
      • mvn verify (-Dskip Tests)
  • Gradle
    • 当使用java插件的时候,自动创建名为test的Test的任务
    • ./gradlew test —tests ‘TestClass.testMethod’
    • image.png
  • 再Idea中可以直接运行

测试的过程中发生了啥?

  • 当我们启动Spring容器时 => 跑在一个jvm里
  • 当我们运行mvn命令时 => 跑在一个jvm里
  • 运行测试时
    • 一个新的jvm会被创建
    • 隔离测试的环境
    • 避免互相干扰

jacoco测试覆盖率

jacoco是如何工作的

  • java agent
  • java instrumentation
  • 生成测试覆盖率报告
  • 将报告与源码相结合

image.png
image.png