最简单的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);
}
}
附件为工程源码,测试目标类与测试代码类存在于不同工程,所以需要将两个工程之间建立依赖关系
分享到:
相关推荐
Java日历及备忘录程序是一个实用的桌面应用程序,它模仿了Windows操作系统中的日历功能,并添加了备忘录管理特性。这个程序的核心是利用Java编程语言实现的,旨在帮助用户方便地查看日期并设置提醒,提高个人或工作...
10. **测试与调试**:Android Studio内置了强大的测试框架,如JUnit和Espresso,可以帮助开发者编写单元测试和UI测试,确保应用的稳定性和功能正确性。 以上是关于“android studio 简单备忘录”项目的一些核心知识...
【Android 备忘录小程序详解】 在Android平台上开发备忘录小程序是一项常见的任务,它能够帮助用户方便地记录和管理日常事务。这个压缩包提供的工程实现了这样一个功能丰富的备忘录应用,包括侧滑删除、置顶操作...
### 一些常用的JUnit方面API备忘录 #### 1. 使用 `assertCurrentActivity()` 验证当前活动(Activity) 在Android测试中,`assertCurrentActivity()` 方法被用来验证当前显示的Activity是否为预期中的Activity。这...
在Android平台上,开发一款备忘录应用是一项常见的学习任务,旨在帮助用户记录日常生活中的重要事项。这个"android作业 备忘录"项目可能是为学生或初学者设计的一个实践练习,以便他们更好地理解和掌握Android应用...
【安卓手机备忘录】是一款专为Android操作系统设计的实用应用程序,它旨在帮助用户记录日常生活、工作中的重要事项,提供便捷的信息存储与管理服务。这款备忘录软件因其功能全面、用户体验良好而受到广泛欢迎,尤其...
【Android程序源码--备忘录】是一个关于Android平台应用开发的项目,主要涉及的是创建一个功能完善的备忘录应用程序。这个项目可以帮助开发者深入理解Android应用程序的架构、UI设计、数据存储以及用户交互等核心...
11. **测试**:可能还包含了测试用例,如`androidTest`目录下的JUnit或Espresso测试,以验证应用的功能和性能。 以上是基于描述和标签推测的Android备忘录应用可能涉及的技术点,实际源代码中可能会包含更多细节,...
【安卓备忘录项目概述】 本项目是一款基于Android Studio开发的安卓备忘录应用程序,集成了用户登录和注册功能,允许用户创建、编辑和管理个人的备忘录。这款应用旨在提供一个便捷的方式,帮助用户记录日常生活中的...
综上所述,"Android_实战_备忘录"实例覆盖了Android应用开发的多个重要方面,包括UI设计、数据库操作、事件处理、数据管理以及测试策略。通过学习和实践这个项目,开发者可以深化对Android开发的理解,提升实际项目...
9. **测试**: 可能包含单元测试和UI测试,使用JUnit和Espresso进行自动化测试,确保代码质量。 通过深入分析和学习这个备忘录应用的源码,你可以了解Android应用开发的基本流程,掌握如何将用户界面与后台逻辑相...
8. **单元测试和集成测试**:项目可能包含JUnit或TestNG编写的测试用例,用于验证各个组件的正确性,确保系统在部署前的质量。 9. **Maven或Gradle构建工具**:这些工具用于管理和构建项目,依赖管理和构建自动化...
11. **测试与调试**:良好的源码实例应该包含了测试用例,如JUnit或Espresso测试,以验证功能的正确性。同时,开发者可能使用Logcat进行调试。 通过深入研究这个【安卓开发备忘录源码】,新手可以逐步掌握安卓应用...
总的来说,"备忘录日程管理java代码"项目涵盖了Java编程、GUI设计、事件处理、日期时间操作、数据存储、测试和项目管理等多个方面,是一个综合性的Java应用开发案例。通过学习和实践这样的项目,开发者可以提升自己...
在Android平台上开发备忘录系统是一项常见的任务,它涉及到用户界面设计、数据管理以及交互逻辑等多个方面的技术。这里我们将深入探讨这个"Android备忘录系统"的实现细节,包括其核心功能、技术栈以及可能的设计思路...
【标题】"备忘录代码"的描述指出这是一个简洁易懂的备忘录应用程序的代码实现,它可能是一个基础但实用的工具,适用于Android平台,考虑到标签为"android"。在Android开发中,备忘录应用通常是用于创建、查看和管理...
这篇文档将深入解析《Android 备忘录源码》这一项目,它是一个针对学生毕业设计学习的Android应用程序示例。这个源码可以帮助初学者和开发者理解Android应用开发的基础,以及如何构建一个实用的备忘录应用。我们将...
10. **测试**:对备忘录应用进行单元测试、集成测试和UI测试是必要的,以确保功能的正确性和稳定性。可以使用JUnit、Espresso等工具进行测试。 以上是基于给定信息的一些基本Android备忘录应用开发知识点,实际项目...
4. **Android架构组件**:备忘录应用可能会采用Android的推荐架构组件,如ViewModel、LiveData、Repository等,这些组件帮助实现数据持久化和状态管理,使代码更易于测试和维护。 5. **SQLite数据库**:备忘录应用...