当前位置:首页 » 编程软件 » 大牛纯脚本

大牛纯脚本

发布时间: 2025-09-28 00:55:35

❶ 有没有技术大牛了解java开发,测试和CI的关

大家可能对如下情景比较熟悉:

  • 如果开发过SSH的web项目,启动服务器可能会比较慢,有的项目甚至需要1分多钟,甚至更多,这个启动时间的等待一般就浪费了;

  • 在开发项目时,有些功能比较复杂,当时觉得思路特清晰,但是过了一段时间后,自己也忘了,完善功能时频繁出现bug,降低开发速度;

  • 在维护项目时,不知道自己修改的对还是不对,是否存在隐患;维护速度降下来了;

  • 如果开发一个很多人都使用的接口,典型的如用户系统,要保证比如升级时向下兼容;

  • 在团队间协作时,有时候只定义好接口,对方还没有给实现,如何进行同步开发?

  • 如上问题,估计只要是个开发人员,都可能遇到过;如果此时有了单元/集成测试,那我们能很好的解决这些问题。(注:加下来如果没有特殊情况,不刻意强调 单元测试/集成测试,即提到测试是指的是单元/集成测试)

    我从以下几个方面介绍测试:

    1、为什么需要测试?

    2、如何进行测试?

    3、测试有哪些好处?

    4、一切都需要测试吗?

    1、为什么需要测试?

    测试的目的是什么?我的理解是:

  • 缩短发现问题到解决问题的速度;

  • 给程序一个修改后能验证是否正确的保证;(回归测试)

  • 如果是开源软件,我们可以通过单元测试了解其是怎么使用的;比如我之前通过cglib的单元测试学习过cglib的使用;

  • 所以如果你遇到如上问题,就需要写测试。写测试可能是为了自己(1、2);也可能是为了帮助别人(3)。

    2、如何进行测试?

    很多朋友不知道如何进行测试,其实测试很简单,别把它想复杂了,按照自己的想法测试每个功能点是否正确即可。

    2.1、测试流程

    单元测试流程

  • <plugin>

  • <groupId>org.codehaus.mojo</groupId>

  • <artifactId>native2ascii-maven-plugin</artifactId>

  • <version>1.0-alpha-1</version>

  • <executions>

  • <execution>

  • <phase>generate-resources</phase>

  • <goals>

  • <goal>native2ascii</goal>

  • </goals>

  • <configuration>

  • <encoding>UTF-8</encoding>

  • <src>src/main/messages</src>

  • <dest>target/${project.artifactId}/WEB-INF/classes</dest>

  • <includes>messages.properties</includes>

  • </configuration>

  • </execution>

  • </executions>

  • <!--native2ascii使用的tools.jar-->

  • <dependencies>

  • <dependency>

  • <groupId>com.sun</groupId>

  • <artifactId>tools</artifactId>

  • <version>1.7.0</version>

  • <scope>system</scope>

  • <systemPath>${java.home}/../lib/tools.jar</systemPath>

  • </dependency>

  • </dependencies>

  • </plugin>

  • 如果使用mysql,端口只能是3306。

    如果想开端口测试,这是不允许的。

    如下是我项目中的一个配置.travis.yml,放到项目的根下即可:

    -----------------------------------

    language: java 语言

    env: 环境

    - DB=mysql 使用mysql

    jdk:

    - openjdk jdk使用openjdk

    mysql:

    database: es 数据库名为es

    username: root 用户名为root

    password : 密码为空

    encoding: utf8 编码为utf8

    install: 安装时执行的脚本

    - mvn install -Dmaven.test.skip=true mvn安装并跳过测试

    before_script: script之前执行的测试

    - cd web

    - mvn db:create 创建数据库的mvn命令(此处使用了maven-db-plugin 插件)

    - mvn db:schema 创建脚本的mvn命令

    - mvn db:data 安装数据的mvn命令

    - cd ..

    script: 测试时执行的脚步

    - cd common

    - mvn test 测试common子模块

    - cd ..

    - cd web

    - mvn test -Pit 测试web子模块,并指定使用it profile测试(即集成测试的配置,具体参考pom.xml中的profile/it)

    notifications: 触发

    email: 测试完成后测试报告发到哪

    - [email protected]

    -----------------------------------

    持续集成不能修复代码的错误,而是和单元测试一样,缩短发现问题带解决问题的时间,这样可以提高开发效率,降低项目风险,提高项目的稳定性。而且尤其是团队协作时,可以发现其他人的代码是否对自己的代码产生影响。

    到此我们利用单元测试+CI可以加速开发人员的开发速度。利用好单元测试和CI,不要纯粹为了单元测试和CI而去做这些事情。

    本文没有介绍TDD,TDD并不会那么美好,我认为我们可以借鉴TDD的一些思想,但决不能迷信TDD,有时候,尤其如开发企业应用,先写功能再写测试可能效率更高,而且大部分时候是不需要TDD的。而且我也没能在实际项目中获取太多TDD的好处,但是我获得了测试的好处。

    本文也没有介绍测试覆盖率,我认为不要一味的追求覆盖率,有时候有的覆盖率没有任何意义。所以不要让为了覆盖率而覆盖率拖慢了项目开发进度。

    正如stackoverflow上的一篇帖子《How deep are your unit tests?》上Kent Beck的回答:

    写道

    老板为我的代码付报酬,而不是测试,所以,我对此的价值观是——测试越少越好,少到你对你的代码质量达到了某种自信。

    可以前往coolshell的“单元测试要做多细?”去得到一些经验。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:582
制作脚本网站 发布:2025-10-20 08:17:34 浏览:876
python中的init方法 发布:2025-10-20 08:17:33 浏览:571
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:757
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:673
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1000
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:243
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:103
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:795
python股票数据获取 发布:2025-10-20 07:39:44 浏览:701