测试框架迁移 <测试之体系,人人皆有一砖一瓦>

【测试之体系,人人皆有一砖一瓦】

【概述】
测试是非常重要的,构建一个好的测试对于系统的质量、重构非常重要。下面简单介绍下测试的一些框架,有的是带过,此篇主要是我这次迁移测试框架的一些总结。如果大家对其中的一些框架比较感兴趣,可以去研究下。 推荐:junit\testng\jmockit 。对于每个开发工程师肯定会大有益处的。其中会涉及到很到的java技术点。
【选型】
测试框架非常多,从最流行的junit到testng。业界的单元测试框架非常多,也比较复杂。为了减少大家选型带来的成本,阿里巴巴就开发了自己的单元测试框架,名为 jtester:http://code.google.com/p/java-tester/。jtester集成了非常多的框架,大家可以试用下。jtester其中内嵌了:testng、jmockit、script.bsh、fitnesse:http://fitnesse.org/FitNesse.UserGuide.OneMinuteDescription、jcommander: 是一个非常小的Java 类库,用来解析命令行参数、JTA:远程登陆、jtester也实现很多自己的一些框架,如:断言等。不过最难得是它把如此多好的框架无缝地集成在一起了。
【迁移】
最近几天在迁移单元测试,简单看了下以前的单元测试框架。
            <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.junit</artifactId>
                    <version>4.5</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>sourceforge.spring.modules.test</artifactId>
                    <version>2.5.6</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.testng.jdk15</artifactId>
                    <version>5.8</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.unitils</artifactId>
                    <version>2.4</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.dbunit</artifactId>
                    <version>2.4.3</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.hamcrest-all</artifactId>
                    <version>1.2</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.mockito-all</artifactId>
                    <version>1.8.0</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.jmock</artifactId>
                    <version>2.5.1</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.jmockit</artifactId>
                    <version>0.997</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.jmock-legacy</artifactId>
                    <version>2.5.1</version>
               </dependency>
其中有很多的框架在项目中根本就没有用到,所以就需要进行清理,所以我把在测试阶段的类加载信息打印出来(-XX:TraceClassLoading),再分析。不过这个比较繁琐
后来还是直接只用 mvn dependency:analyze,来分析,
{这些Unused declared dependencies 列表并不准确,如果project中还有大量反射等,移除包会出现想不到的意外,此点需要慎重。}
测试框架迁移 <测试之体系,人人皆有一砖一瓦>_第1张图片
分析后发现以下的框架在系统中没有应用:
misc.ognl.jar(2.6.9)
     不知道干啥
test.hamcrest-all.jar(1.2)
     http://code.google.com/p/hamcrest/
     Hamcrest it is not a testing library: it just happens that matchers are very useful for testing这个就不讲了。
test.dbunit:jar(2.4.3)
     http://www.dbunit.org/
     数据库测试
jmock jmock-legacy(2.5.1)
     mock框架
     http://www.jmock.org/
mockito(1.8.0)
     是一个流行的Mocking框架
把以上的测试框架全部去掉。
后来进入,再加入了jtester测试框架
【兼容】
  【工程中既有 testng又有junit的单元测试,怎么都能跑呢?】
 本质testng是支持 junit单元测试的。
在maven中单元测试是用surefire来跑的。
这个就需要在surefire来设定了。如果不设置suiteXmlFiles属性,surefire会自动生成suiteXmlFile。他会自动生成testng文件,生成的规则是找test开头或者结尾的类。
如果想指定,则需要junit与testng分别写suite。其中一个junit属性设置为true。
具体可以参考: http://testng.org/doc/documentation-main.html#junit
【思考】
对于比较庞大的项目,那么测试的易用性非常重要。jtester是非常易用,并且他是开源的。不过对于文档和代码,好像作者没有及时更新啊。如果有朋友需要使用,可以联系我。嘿嘿。。。
如果项目比较小,建议还是使用原生的junit与testng。

你可能感兴趣的:(框架,测试,单元测试,JUnit,dependencies,mocking)