`
lgsun592
  • 浏览: 54666 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Junit测试备忘录

    博客分类:
  • Java
阅读更多
最简单的Junit4x sample,个人认为作为程序员有时候看代码要比文字容易多了,当然代码必须注释规范、明了、易懂
/**  
 * Class Arithmetic 
 * 测试目标类
 * @author  lgsun
 * Date: 2011-3-27
 */ 
package com.lgsun.target; 

public class Arithmetic
{
	private int parmaerOne;
	private int parmaerTwo;
	
	public int getParmaerOne()
	{
		return parmaerOne;
	}
	public void setParmaerOne(int parmaerOne)
	{
		this.parmaerOne = parmaerOne;
	}
	
	public int getParmaerTwo()
	{
		return parmaerTwo;
	}
	public void setParmaerTwo(int parmaerTwo)
	{
		this.parmaerTwo = parmaerTwo;
	}
	
	public int getSum()
	{
		return (parmaerOne+parmaerTwo);
	}
}


/**  
 * Class ArithmeticTest 
 * Junit测试sample
 * @author  lgsun
 * Date: 2011-3-27
 */
package com.lgsun.test;

import java.lang.reflect.Field;
import java.util.Random;

import junit.framework.Assert;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.lgsun.target.Arithmetic;

@SuppressWarnings("all")
public class ArithmeticTest
{
	private static Logger	logger	= Logger.getLogger(ArithmeticTest.class.getName());
	private Arithmetic		arithmetic;

	/**
	 * 只有在类运行前执行一次 
	 * 一般用于做类级别的初始化 
	 * 可以加入耗费资源较大而且不必每次还原的初始化部分
	 */
	@BeforeClass
	public static void setUpBeforeClass()
	{
		logger.log(Level.INFO, "setUpBeforeClass");
	}

	/**
	 * 只有在类运行结束后执行一次 
	 * 一般用于做类级别的资源回收
	 */
	@AfterClass
	public static void tearDownBeforeClass()
	{
		logger.log(Level.INFO, "tearDownBeforeClass");
	}

	/**
	 * 在每个test方法执行前执行一次 
	 * 可以用于方法级别的数据初始化 
	 * 如果耗费资源较大,资源较多 
	 * 那么会大大降低整个测试类的执行效率
	 */
	@Before
	public void setUp()
	{
		logger.log(Level.INFO, "setUp");
		arithmetic = new Arithmetic();
	}

	/**
	 * 在每个test方法执行后执行一次 
	 * 可以用于方法级别的资源回收还原
	 */
	@After
	public void tearDown()
	{
		logger.log(Level.INFO, "tearDown");
	}

	/**
	 * 真正干活的测试方法,其他方法都是最终为它而服务的 
	 * 对Arithmetic.getParmaerOne()方法进行测试
	 */
	@Test
	public void test_getParmaerOne_1()
	{
		logger.log(Level.INFO, "test_getParmaerOne_1");
		Random random = new Random();

		try
		{
			// 通过反射 获得Arithmetic类的parmaerOne字段,并随机赋值
			Field field = arithmetic.getClass().getDeclaredField("parmaerOne");
			field.setAccessible(true);
			int expected = random.nextInt(Integer.MAX_VALUE);
			field.setInt(arithmetic, expected);

			// 断言,如果 实际值 != 期待值 则断言失败,显示message
			Assert.assertEquals("如果断言失败,则显示此信息", expected, arithmetic.getParmaerOne());
		}
		catch (Exception e)
		{
			e.printStackTrace();
			Assert.fail(e.getMessage());
		}
	}

	/**
	 * 对于单体测试多会使用反射,而且还会要求测试代码覆盖率 
	 * 但是对于功能性测试而言,则侧重实际结果
	 */
	@Test
	public void test_getSum_1()
	{
		logger.log(Level.INFO, "test_getSum_1");
		Random random = new Random();
		int parm1 = random.nextInt(Integer.MAX_VALUE / 10);
		int parm2 = random.nextInt(Integer.MAX_VALUE / 10);
		int sum = parm1 + parm2;
		
		arithmetic.setParmaerOne(parm1);
		arithmetic.setParmaerTwo(parm2);

		// 断言,如果 实际值 != 期待值 则断言失败,显示message
		Assert.assertEquals("如果断言失败,则显示此信息", sum, arithmetic.getSum());
	}
	
	/**
	 * 由于增加了Ignore标签,所以此test case不会被执行
	 */
	@Ignore("可以加上此test case被ignore的原因")
	@Test
	public void test_IgnoreFlag_1()
	{
		logger.log(Level.INFO, "test_IgnoreFlag_1");
	}
	
	/**
	 * 对异常的测试,可以判断异常的类型
	 * 但是没法判断异常的message,所以很多时候还得用try catch
	 */
	@Test(expected = ArithmeticException.class)
	public void test_Exception_1()
	{
		logger.log(Level.INFO, "test_Exception_1");
		int i=1/0;
	}
	
	/**
	 * 防止测试case出现超时现象
	 * 如果超过1000ms测试case还没有执行结束
	 * 那么直接断言失败
	 */
	@Test(timeout = 1000)
	public void test_Timeout_1()
	{
		logger.log(Level.INFO, "test_Timeout_1");
		while(true);
	}
}


附件为工程源码,测试目标类与测试代码类存在于不同工程,所以需要将两个工程之间建立依赖关系
0
0
分享到:
评论

相关推荐

    Java日历及备忘录

    Java日历及备忘录程序是一个实用的桌面应用程序,它模仿了Windows操作系统中的日历功能,并添加了备忘录管理特性。这个程序的核心是利用Java编程语言实现的,旨在帮助用户方便地查看日期并设置提醒,提高个人或工作...

    android studio 简单备忘录

    10. **测试与调试**:Android Studio内置了强大的测试框架,如JUnit和Espresso,可以帮助开发者编写单元测试和UI测试,确保应用的稳定性和功能正确性。 以上是关于“android studio 简单备忘录”项目的一些核心知识...

    android 备忘录小程序

    【Android 备忘录小程序详解】 在Android平台上开发备忘录小程序是一项常见的任务,它能够帮助用户方便地记录和管理日常事务。这个压缩包提供的工程实现了这样一个功能丰富的备忘录应用,包括侧滑删除、置顶操作...

    一些常用的junit方面API备忘录

    ### 一些常用的JUnit方面API备忘录 #### 1. 使用 `assertCurrentActivity()` 验证当前活动(Activity) 在Android测试中,`assertCurrentActivity()` 方法被用来验证当前显示的Activity是否为预期中的Activity。这...

    android 作业 备忘录

    在Android平台上,开发一款备忘录应用是一项常见的学习任务,旨在帮助用户记录日常生活中的重要事项。这个"android作业 备忘录"项目可能是为学生或初学者设计的一个实践练习,以便他们更好地理解和掌握Android应用...

    安卓手机备忘录

    【安卓手机备忘录】是一款专为Android操作系统设计的实用应用程序,它旨在帮助用户记录日常生活、工作中的重要事项,提供便捷的信息存储与管理服务。这款备忘录软件因其功能全面、用户体验良好而受到广泛欢迎,尤其...

    Android程序源码--备忘录

    【Android程序源码--备忘录】是一个关于Android平台应用开发的项目,主要涉及的是创建一个功能完善的备忘录应用程序。这个项目可以帮助开发者深入理解Android应用程序的架构、UI设计、数据存储以及用户交互等核心...

    Android代码-备忘录源码.zip

    11. **测试**:可能还包含了测试用例,如`androidTest`目录下的JUnit或Espresso测试,以验证应用的功能和性能。 以上是基于描述和标签推测的Android备忘录应用可能涉及的技术点,实际源代码中可能会包含更多细节,...

    安卓备忘录 基于android studio 运行的,带登录和注册的

    【安卓备忘录项目概述】 本项目是一款基于Android Studio开发的安卓备忘录应用程序,集成了用户登录和注册功能,允许用户创建、编辑和管理个人的备忘录。这款应用旨在提供一个便捷的方式,帮助用户记录日常生活中的...

    Android_实战_备忘录

    综上所述,"Android_实战_备忘录"实例覆盖了Android应用开发的多个重要方面,包括UI设计、数据库操作、事件处理、数据管理以及测试策略。通过学习和实践这个项目,开发者可以深化对Android开发的理解,提升实际项目...

    Android 备忘录源码.zip项目安卓应用源码下载

    9. **测试**: 可能包含单元测试和UI测试,使用JUnit和Espresso进行自动化测试,确保代码质量。 通过深入分析和学习这个备忘录应用的源码,你可以了解Android应用开发的基本流程,掌握如何将用户界面与后台逻辑相...

    s2sh框架实例——个人备忘录系统源码

    8. **单元测试和集成测试**:项目可能包含JUnit或TestNG编写的测试用例,用于验证各个组件的正确性,确保系统在部署前的质量。 9. **Maven或Gradle构建工具**:这些工具用于管理和构建项目,依赖管理和构建自动化...

    安卓开发备忘录源码

    11. **测试与调试**:良好的源码实例应该包含了测试用例,如JUnit或Espresso测试,以验证功能的正确性。同时,开发者可能使用Logcat进行调试。 通过深入研究这个【安卓开发备忘录源码】,新手可以逐步掌握安卓应用...

    备忘录日程管理java代码

    总的来说,"备忘录日程管理java代码"项目涵盖了Java编程、GUI设计、事件处理、日期时间操作、数据存储、测试和项目管理等多个方面,是一个综合性的Java应用开发案例。通过学习和实践这样的项目,开发者可以提升自己...

    Android备忘录系统

    在Android平台上开发备忘录系统是一项常见的任务,它涉及到用户界面设计、数据管理以及交互逻辑等多个方面的技术。这里我们将深入探讨这个"Android备忘录系统"的实现细节,包括其核心功能、技术栈以及可能的设计思路...

    备忘录代码

    【标题】"备忘录代码"的描述指出这是一个简洁易懂的备忘录应用程序的代码实现,它可能是一个基础但实用的工具,适用于Android平台,考虑到标签为"android"。在Android开发中,备忘录应用通常是用于创建、查看和管理...

    Android 备忘录源码-IT计算机-毕业设计.zip

    这篇文档将深入解析《Android 备忘录源码》这一项目,它是一个针对学生毕业设计学习的Android应用程序示例。这个源码可以帮助初学者和开发者理解Android应用开发的基础,以及如何构建一个实用的备忘录应用。我们将...

    android备忘录

    10. **测试**:对备忘录应用进行单元测试、集成测试和UI测试是必要的,以确保功能的正确性和稳定性。可以使用JUnit、Espresso等工具进行测试。 以上是基于给定信息的一些基本Android备忘录应用开发知识点,实际项目...

    Android 项目源码-备忘录(附源码).zip

    4. **Android架构组件**:备忘录应用可能会采用Android的推荐架构组件,如ViewModel、LiveData、Repository等,这些组件帮助实现数据持久化和状态管理,使代码更易于测试和维护。 5. **SQLite数据库**:备忘录应用...

Global site tag (gtag.js) - Google Analytics