java测试包jiunit_JUnit----单元测试

本文详细介绍了如何使用JUnit4进行单元测试,包括创建测试类、编写测试方法、使用各种注解(如@Test, @Before, @After, @BeforeClass, @AfterClass等)以及处理异常测试。通过具体的Java类T和User的测试案例,展示了如何进行断言和测试流程控制。" 126118098,14994744,使用WINSOCK.OCX实现TCP/IP双向通信,"['网络编程', 'TCP/IP', 'PowerBuilder', '服务器', '客户端']
摘要由CSDN通过智能技术生成

为什么进行单元测试?

1. 重用测试, 应付将来实现的变化.

2. 明确指定我的东西是没问题的.

Failure, error的区别?

Failure只测试失败, Error指程序本身出错

1. new ->java project: JUnit4

2. src右键->new->class T, package: com.bjsxt.junit4

package com.bjsxt.junit4;

public class T {

public int add(int x, int y){

return x+y;

}

public int divide(int x, int y){

return x/y;

}

}

3. 包com.bjsxt.junit4 右键-> new->package-> com.bjsxt.junit4.test ->右键-> new->JUnit test case(New JUnit 4 test, name: TTest, class under test:T)->next -> 选择要测试的T方法->finish->选择默认的myeclipse 的jar 包,

4. build path->remove ... 删除原生jar, 添加自己下载的jar, build-> add external archieves.

5. 打开TTest.java,编写测试代码:

package com.bjsxt.unit4.test;

import static org.junit.Assert.assertThat;

import static org.hamcrest.Matchers.*;

import org.junit.Test;

import com.bjsxt.u2.T;

public class TTest {

@Test

public void testAdd() {

int z = new T().add(5,3);

assertThat(z,is(8));

assertThat(z, allOf(greaterThan(1), lessThan(10)));

}

}

keep bar green to keep bugs clean.

如果不先删除包, 会出现如下错误:

1. 使用上述is方法时提示错误, 需要引入hamcrest jar包(core和license包): 右键工程-> build path ,引入两个包

然后发现出现:java.lang.SecurityException: class "org.hamcrest.Matchers"‘s signer information does not match signer information of other classes in the same package

因为hamcrest的包和junit4里的hamcrest包的classloader用的不是同一个.解决方法:

把myeclipse自带的包都去掉, 引入自己的包junit即可.

如果测试divide时出现异常怎么办?

在annotation里加入expected的异常类型即可. 后面timeout是时间的判断

@Test(expected=java.lang.ArithmeticException.class, timeout=100)

public void testDivide() {

int z=new T().divide(5,0);

}

Annotation:

1. @Test : 测试方法

2. @Ignore: 被忽略的测试方法

3. @Before: 每个测试方法之前运行  用法: 执行方法前打开某个文件

4. @After: 每个测试方法之后运行    用法: 执行方法后关闭某个文件

5. @BeforeClass: 所有测试方法之前运行  用法: 配置工作, 建立数据库连接等费时工作

6. @AfterClass: 所有测试方法之后运行    用法: 比如关闭数据库

例子:

package com.bjsxt.junit4.test;

import static org.hamcrest.Matchers.is;

import static org.junit.Assert.*;

import org.junit.After;

import org.junit.AfterClass;

import org.junit.Before;

import org.junit.BeforeClass;

import org.junit.Test;

import com.bjsxt.junit4.T;

public class TTest {

@BeforeClass //提前配置工作, 比如数据库连接等耗费时间的资源, 搭载复杂环境时

public static void beforeClass(){

System.out.println("BeforeClass");

}

@AfterClass //关闭数据库连接

public static void afterClass(){

System.out.println("AfterClass");

}

@Before //打开文件使用

public void before(){

System.out.println("before");

}

@Test

public void testAdd() {

int z=new T().add(5,3);

assertThat(z,is(8));

//assertTrue("z is not bigger than 3",z>3);

}

[email protected]

@Test(expected=java.lang.ArithmeticException.class, timeout=100)

public void testDivide() {

int z=new T().divide(5,0);

}

@After //关闭文件使用

public void after(){

System.out.println("after");

}

}

结果:

BeforeClass

before

after

before

after

AfterClass

还可以新建另一个类, User:

package com.bjsxt.junit4;

public class User {

public String getName(){

return "songhuiqiao";

}

}

在test包右键, 新建unit test, UserTest

package com.bjsxt.junit4.test;

import static org.junit.Assert.assertThat;

import static org.hamcrest.Matchers.is;

import org.junit.Test;

import com.bjsxt.junit4.User;

public class UserTest {

@Test

public void testGetName() {

assertThat(new User().getName(),is("songhuiqiao"));

}

}

如果两个类同时运行的话, 在test包右键, run->configuration->run all:

原文:http://www.cnblogs.com/wujixing/p/5403399.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值