单元测试技术

关于单元测试,个人认为,在开发一款软件时,测试是必不可少的一项,如果没有比较完善的测试,上线的项目往往会出现很多在开发阶段意想不到的问题。如果这样的一个项目上线之后,让你去负责这么一个不确定的东西,谁都不敢想象,所以说这一部分还是很有必要学习一下的。

1.什么是单元测试?

  • 单元:代码的基本组成单位,比如方法、类、模块等。
  • 测试:给定输入,检查输出是否符合要求。
  • 自动化测试:无需人工干预,定期、不定期自动执行的测试任务。

2.关于java的单元测试框架

  • JUnit:最早的单元测试框架
  • TestNG:优化了的单元测试框架
  • Selenium:侧重于页面和集成测试
  • Arquillian:侧重于集成测试,整合CDI。

以下是关于在Netbeans下进行的测试类的创建方式

  • 新建测试类:新建->测试类,选择要测试的类
  • 要在测试的类上右键点击“工具->新建更新测试”
  • 运行时,按照正常的java文件一样运行测试类即可

Ps:

1)在定义测试类的名称问题上,注意最好是用test+类名,否则可能会引起错误(Test class not found in selected Project)当然之后因为有@test注解可以避免,但最好将其作为一种习惯。

2)对于生成的测试类进行运用修改时,需要将最后一行的fail...注释掉,不然在进行测试的时候事没有颁发通过的。

3)在手写测试类的时候,按照对应的情况在上面进行相应的注释

eg: //case1    //case2等等

3JUnit主要的注解

这里所说的对应的注解及为在netbeans里面创建对应的测试类的时候的一些勾选项目,如下所示:
1

对应会生成相应的测试方法,以下是各种注解的用法:

  • @Test:表明方法为测试方法(可以测试期望异常和超时时间)
  • @Before:每次执行测试方法前都要执行(初始化方法)
  • @After:每次执行测试方法之后都要执行(释放资源)
  • @BeforeClass:每次初始化测试类前都要执行(必须为static void)
  • @AfterClass:每次初始化测试类后都要执行(必须为static void)
  • @Ignore:忽略这个测试方法
  • @RunWith:制定测试类使用某个运行器
  • @Parameters:制定测试类的测试数据集合
  • @Rule:允许灵活添加或重新定义测试类中的每个测试方法的行为
  • @FixMethodOrder:制定测试方法的执行顺序

一个测试类单元测试的执行顺序为:

@BeforeClass - > @Before - > @Test - > @After - > @ AfterClass

每一个测试方法的调用顺序为:

@Before - > @Test - > @After

引入对应的一个概念:代码覆盖率

通常的计量方法:已测试的方法/总方法数

JUnit常见断言

assertArrayEquals(expecteds, actuals)查看两个数组是否相等。
assertEquals(expected, actual)查看两个对象是否相等。类似于字符串比较使用的equals()方法
assertNotEquals(first, second)查看两个对象是否不相等。
assertNull(object)查看对象是否为空。
assertNotNull(object)查看对象是否不为空。
assertSame(expected, actual)查看两个对象的引用是否相等。类似于使用“==”比较两个对象
assertNotSame(unexpected, actual)查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
assertTrue(condition)查看运行结果是否为true。
assertFalse(condition)查看运行结果是否为false。
assertThat(actual, matcher)查看实际值是否满足指定的条件
fail()让测试失败

JUnit测试套件

  • 将多个测试类组织到一起的方法按照顺序执行。
  • 在和Maven整合之后,这一部分就不太重要。

JUnit和Maven的整合

参见Phabricator/training实例

链接:Training实例

JUnit和Jenkins的结合

在登陆Jenkins之后,对应的面板上有关与对应项目的参数信息,而这些对应的信息来源就是在用maven来生成的target>surefire-reports目录下的.xml文件来传递的信息。对应的pom文件配置为:

         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <!-- 单元测试 -->
                    <execution>
                        <id>unit test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/*Test.class</include>
                            </includes>
                            <excludes>
                                <exclude>**/*IT.class</exclude>
                            </excludes>
                            <skip>false</skip>
                        </configuration>
                    </execution>
                    <!-- 集成测试 -->
                    <execution>
                        <id>run-integration-test</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/*IT.class</include>
                            </includes>
                            <excludes>
                                <include>**/*Test.class</include>
                            </excludes>
                            <skip>false</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值