- 浏览: 304554 次
- 性别:
- 来自: 南京
最新评论
-
memorymyann:
不好意思我看错了
Java计算时间差 -
memorymyann:
好吧,网上很多方法一的,我不知道大家有验证过没有。我测试了下。 ...
Java计算时间差 -
ndzj981479673:
TonyLian 写道下这个包到WEB-INF/libs sp ...
org.springframework.web.servlet.DispatcherServlet -
Heart-wu:
com.jacob.com.ComFailException: ...
Jacob使用小结 -
wo4562658:
没有附件?getAnyCellStyle 这个方法,getHd ...
POI使用小结
一 几个常用注释
@Before 被它注释的方法,在每个测试方法运行之前都要执行
@After 与@Before相对,被它注释的方法,在每个测试方法运行之后执行
上述两个注释,它们是方法级别的,因为每个测试方法的运行前后,都会触发它们的执行。因此,有影响效率的嫌疑
这两类方法,都用public void 修饰,而且不能带有任何参数,命名随便
view plaincopy to clipboardprint?
@Before
public void setBeforeMethod()
{
}
@After
public void seAfterMethod()
{
}
@Before
public void setBeforeMethod()
{
}
@After
public void seAfterMethod()
{
}
@BeforeClass 被它注释的方法,在该类中的测试方法运行之前刚好运行一次
@AfterClass 被它注释的方法,都将在该类中的所有测试都运行之后刚好运行一次
上述两个注释,是类级别的,对一个类来说,就执行一次
这两类方法,都用public static void 修饰,而且不能带有任何参数,命名随便
view plaincopy to clipboardprint?
@BeforeClass
public static void setBeforeClass()
{
}
@AfterClass
public static void setAfterClass()
{
}
@BeforeClass
public static void setBeforeClass()
{
}
@AfterClass
public static void setAfterClass()
{
}
上面的四个注释,用于:为测试方法的执行,做一些准备工作和销毁工作。
@Test 被它注释的方法,就是测试方法
@Test(expected=XXXException.class) 异常测试,若该异常XXXException没有抛出,或抛出另一个异常,则测试失败
@Test(timeout=500) 可以帮助进行性能测试,为方法运行设置时间限制,单位毫秒,过时未完成则认为失败
测试方法,都用public void 修饰,而且不能带有任何参数,命名随便
view plaincopy to clipboardprint?
@Test
public void testToString1()
{
Example1 e = new Example1();
Assert.assertEquals("snoopy:0", e.toString());
}
@Test(expected = java.lang.ArithmeticException.class)
public void test()
{
int i = 0;
int j = 2;
int r = j / i;
}
@Test(timeout = 2)
public void test()
{
int r = 1;
for(int i = 0; i < 100; i ++ )
{
r *= 2;
}
}
@Test
public void testToString1()
{
Example1 e = new Example1();
Assert.assertEquals("snoopy:0", e.toString());
}
@Test(expected = java.lang.ArithmeticException.class)
public void test()
{
int i = 0;
int j = 2;
int r = j / i;
}
@Test(timeout = 2)
public void test()
{
int r = 1;
for(int i = 0; i < 100; i ++ )
{
r *= 2;
}
}
@Ignore 跳过该方法,不执行(忽略,只是权宜之计,如果写了一个方法,一直忽略,那就要考虑干嘛写它了)
view plaincopy to clipboardprint?
// @Ignore
@Ignore(".. because of ...")
@Test
public void testToString1()
{
Example1 e = new Example1();
Assert.assertEquals("snoopy:0", e.toString());
}
二 私有方法的单元测试
public方法的测试,相对要容易些,获取对象实例,调用public方法,就可以了。
protected方法的测试,可以通过建立一个与被测类同包名的测试类来解决。
private方法的测试,稍微麻烦些。
私有方法的测试,一般是采用发射的原理进行。
可以自己手动编写这一反射过程,如:
view plaincopy to clipboardprint?
package application;
//待测试类
public class Example1
{
public void print(int i, int j)
{
System.out.println(sum(i, j));
}
private int sum(int i, int j)
{
return i + j;
}
}
package application;
//待测试类
public class Example1
{
public void print(int i, int j)
{
System.out.println(sum(i, j));
}
private int sum(int i, int j)
{
return i + j;
}
}
手动编写利用反射特性,完成对私有方法的测试:
view plaincopy to clipboardprint?
package application;
import java.lang.reflect.Method;
import junit.framework.Assert;
import org.junit.Test;
public class Example1Test
{
@Test
public void testSum()
{
try
{
Class clazz = Class.forName("application.Example1");
Example1 instance = (Example1) clazz.newInstance();
Class [] args = new Class []{ int.class, int.class };
Method sum = instance.getClass().getDeclaredMethod("sum", args);
sum.setAccessible(true);
Assert.assertEquals(2, sum.invoke(instance, 1, 1));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
package application;
import java.lang.reflect.Method;
import junit.framework.Assert;
import org.junit.Test;
public class Example1Test
{
@Test
public void testSum()
{
try
{
Class clazz = Class.forName("application.Example1");
Example1 instance = (Example1) clazz.newInstance();
Class [] args = new Class []{ int.class, int.class };
Method sum = instance.getClass().getDeclaredMethod("sum", args);
sum.setAccessible(true);
Assert.assertEquals(2, sum.invoke(instance, 1, 1));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
除了自己手动编写外,我在网上找到了一个,可以帮助我们完成私有方法测试的小框架,其底层原理还是反射:
提供该framework的网站,包括下载、简介之类的信息 http://code.google.com/p/accessive/
view plaincopy to clipboardprint?
package application;
//待测试的类
public class Example2
{
private int age;
private String name;
public Example2(int age, String name)
{
this.age = age;
this.name = name;
}
private String tostring()
{
return tostring(this.age, this.name);
}
private String tostring(int age, String name)
{
return name + " : " + age;
}
}
package application;
//待测试的类
public class Example2
{
private int age;
private String name;
public Example2(int age, String name)
{
this.age = age;
this.name = name;
}
private String tostring()
{
return tostring(this.age, this.name);
}
private String tostring(int age, String name)
{
return name + " : " + age;
}
}
使用accessive小框架
view plaincopy to clipboardprint?
package application;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.j2speed.accessor.FieldAccessor;
import com.j2speed.accessor.MethodAccessor;
public class Example2Test
{
private static Example2 instance;
@BeforeClass
public static void init()
{
instance = new Example2(12, "Sufie");
}
// 访问私有变量
@Test
public void testField()
{
FieldAccessor < Example2, Integer > ageInt =
发表评论
-
synchronized(this)的一些理解
2011-12-06 18:58 1013对synchronized(this)的 ... -
Comparator和Comparable在排序中的应用
2011-07-30 11:21 899当需要排序的集合或数组不是单纯的数字型时,通常可以使用Co ... -
如何将文件中Base64进制数据生成X509证书
2010-12-16 19:50 2765byte[] ciphertext1 = new BASE64 ... -
Java相关数字签名技术纪要
2010-12-16 18:59 1210一:需要包含的包 ... -
jdom通过string生产xml文档
2010-12-09 10:50 1079生产xml文档: XMLOutputter outpu ... -
Tomcat支持Https访问
2010-11-10 20:01 3191用Tomcat来配置SSL主要有下面这么两大步骤: 一、生成证 ... -
一个tomcat配置多个端口
2010-10-19 18:43 3076第一步、修改server.xml[..\Tomcat 6.0\ ... -
Servlet上传文件及发送HTTP请求至Servet上传文件。
2010-08-12 18:30 1658Servlet接受HTTP消息,解析内容并输出至文件中 // ... -
如何在工程指定目录下保存文件。
2010-08-11 18:59 12041:Servlet中 String fileDir ... -
各进制基本概念。
2010-07-30 12:26 1153二进制: 二进制是逢2进位的进位制,0、 ... -
JMockit_UT小结
2010-07-15 16:11 11551:模拟方法抛出异常 fin ... -
如何将当前时间延迟至指定的年、月、日后日期。
2010-06-23 19:27 1031Calendar cale = Calenda ... -
tomcat添加gzip功能
2010-03-04 15:24 2018在文件tomcat/conf/server.xml 中添加红 ... -
HttpClient笔记
2010-01-16 20:03 3325背景:因为想写一个测试tomcat连接的程序,就试试自已去构造 ... -
ThreadLocal知识
2009-11-14 21:57 2703首先,ThreadLocal 不是用来解决共享对象的多线程访问 ... -
一个不错的JDBC连接池教程(带具体例子)
2009-06-11 21:17 1255关键字: jdbc 1.前言 数据库应用,在许多软件系统中 ... -
Java程序对图片的各种处理
2009-06-11 21:12 1620关键字: 缩放图像、图像切割、图像类型转换、彩色转为黑白 Ja ... -
Java计算时间差
2009-06-11 21:10 5839比如:现在是2004-03-26 13:31:40 ... -
Unable to instantiate Action(关于struts2.0异常)
2009-05-17 20:39 7795[ERROR] - [2009-03-12 14:27:59] ... -
怎么实现jdk6运行,而使用jdk5编译
2009-05-12 22:05 1329步骤: 1:eclipse->window->pr ...
相关推荐
JUnit4 使用方法 ...小结 JUnit4 是一个功能强大且灵活的测试框架,提供了许多实用的测试工具和断言方法。通过学习 JUnit4 的使用方法和核心概念,可以提高测试效率和测试质量,确保软件的可靠性和稳定性。
本小结将详细探讨单元测试及其在Java开发中常用的工具——JUnit。 JUnit是Java编程语言中最流行的一种单元测试框架,它为开发者提供了创建和执行单元测试的简便方法。JUnit基于注解,使得测试用例的编写简洁且易于...
jUnit 基础知识小结包括:一个 TestCase 一般包含有一组相关的测试方法;使用断言测试结果(注意浮点数 assertEquals 要指定 delta,即精度);每个测试方法必须完全独立;测试代码必须非常简单;不能为测试代码再...
本文将基于“lottery software工作小结”这个标题,结合描述中的博文链接以及标签“源码”和“工具”,来探讨相关的知识点。 首先,彩票软件的核心在于算法的设计。它需要根据彩票游戏的规则,比如双色球、大乐透等...
第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结
这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...
第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结
本资源的标题"Java EE平台上实现Web服务及多种客户端实例-小结"表明它聚焦于总结如何在Java EE环境中创建和消费Web服务,并提供了不同客户端的应用示例。 Web服务是一种通过HTTP协议传输数据的方式,它允许不同...
1.5 小结 13 第2章 使用Jakarta Commons来简化开发 14 2.1 Jakarta Commons的功能和用法 14 2.2 小结 18 第3章 Java EE容器 19 3.1 什么是容器 19 3.2 Tomcat的安装和使用 20 3.3 小结 25 第4章 在...
1.5 本章小结 第2章 测试设计模式 2.1 针对失败而测试 2.2 工厂 2.3 数据驱动测试 2.4 异步测试 2.5 测试多线程代码 2.6 性能测试 2.7 模拟和桩 2.8 依赖的测试 2.9 继承和annotation范围 2.10 测试分组 2.11 ...
1.5 本章小结 第2章 测试设计模式 2.1 针对失败而测试 2.2 工厂 2.3 数据驱动测试 2.4 异步测试 2.5 测试多线程代码 2.6 性能测试 2.7 模拟和桩 2.8 依赖的测试 2.9 继承和annotation范围 2.10 测试分组 2.11 ...
### 软件测试知识小结 #### 测试理论知识 **什么是软件测试?** 软件测试是为了寻找软件中的错误而运行软件的过程。一个成功的测试意味着发现了迄今为止尚未发现的错误。软件测试的根本目的是发现软件缺陷、提升...
Maven或Gradle用于项目构建和依赖管理,Git用于版本控制,Junit是常用的单元测试框架。 7. **源码分析**:Java的源代码通常以`.java`为扩展名,通过编译器(javac)编译成字节码(`.class`文件),然后由JVM解释...
1.3 小结 35 第2章 对象无处不在——面向对象的基本概念 37 2.1 讲解 38 2.1.1 什么是面向对象 38 2.1.2 面向对象的基本概念 38 2.1.3 Java对面向对象的支持 41 2.2 练习 42 2.2.1 JavaBeans技术开发可重用...
### HttpUnit小结 #### 一、概述 **HttpUnit**是一个开源的Java库,它为测试Web应用程序提供了一种简单而强大的方法。基于JUnit构建的HttpUnit,旨在弥补JUnit在远程Web内容测试方面的不足。它能够模拟浏览器的...
- **版本**: 不同的语言版本各不相同,例如 JUnit 的最新版本为 JUnit 4,CppUnit 的版本为 1.12.0。 - **价格**: 大多为开源免费。 #### 6. SilkTest - **功能**: SilkTest 是 Borland 推出的一款功能测试工具,...
感谢大家的支持,我终于升级了,上传限制得到提升,所以把资源整合下!希望大家一如既往 Java SE实践教程 pdf格式电子书 下载(一) 更新 ...Java SE实践教程 pdf格式电子书 下载(二) 更新 ...13.4 小结 387
在SSH项目开发过程中,常常会用到各种工具,如Eclipse或IntelliJ IDEA作为集成开发环境,Maven或Gradle作为构建工具,Git进行版本控制,JUnit进行单元测试,以及MySQL或Oracle等数据库管理系统。熟练掌握这些工具...
感谢大家的支持,我终于升级了,上传限制得到提升,所以把资源整合下!希望大家一如既往 Java SE实践教程 pdf格式电子书 下载(一) 更新 ...Java SE实践教程 pdf格式电子书 下载(二) 更新 ...13.4 小结 387
单元测试的实践还包括使用测试框架,如JUnit、TestNG等,它们提供了方便的断言工具和测试结构支持。此外,使用依赖注入(Dependency Injection)可以使测试更加简单,因为我们可以轻松替换真实的对象为模拟对象,...