在eclipse之中使用Junit

  使用Junit单位测试,能够一定程度上减小项目bug的产生。很多时候,我们都是在main函数里面单独去测试一个方法,这样的测试非常不方便。使用Junit可以是测试单位和项目代码分离,一次性测试多个方法,并对结果进行评估。

  在eclipse中进行单位测试,过程如下  右键项目-》build path》add Library 》添加Junit类库。然后右键项目,添加一个source folder,命名为test。

  下面的代码来至于http://www.imooc.com/learn/356。

  首先新建一个类。

  

package com.dong.util;

public class Calculate {

	public int add(int a, int b) {
		return a + b;
	}

	public int subtract(int a, int b) {
		return a - b;
	}

	public int mutiply(int a, int b) {
		return a * b;
	}

	public int divide(int a, int b) {
		return a / b;
	}
}

  然后,我们可以右键该类生成一个Junit test case。这样便会生成一个测试类。

  

package com.dong.util;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class CalculateTest {

	// @Test
	// public void test() {
	// fail("Not yet implemented");
	// }

	@Test
	public void testAdd() {
		assertEquals(6, new Calculate().add(3, 3));
	}

	@Test
	public void testSubtract() {
		assertEquals(0, new Calculate().subtract(3, 3));
	}

	@Test
	public void testMutiply() {
		assertEquals(9, new Calculate().mutiply(3, 3));
	}

	@Test
	public void testDivide() {
		assertEquals(1, new Calculate().divide(3, 3));
	}
}

  测试类被和被测试类其实处于同一个包名下面,只是处于不同的source folder下。上述测试样例是最简单的例子,只是调用了assertEqual方法,更多的测试方法可以见文档。

  下面是测试类的一些要求。

  • 1测试方法必须使用@Test进行修饰
  • 2测试方法必须使用public void方法,不能带参数
  • 3新建一个源代码目录来存放测试代码
  • 4测试类的包应该和被测试类一致
  • 5测试单位的每个方法必须可以独立测试,测试方法不能有依赖
  • 6测试类使用Test作为类名后最(不是必须)
  • 7测试方法使用test作为前缀(不是必须)

  下面这个类演示了junit测试时候调用每个方法的次序。

  

package com.dong.util;

import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class JunitFlowTest {

	/**
	 * 所有方法被调用前执行。由于是静态的,适合只加载一次的内容。 例如配置文件
	 *
	 * @throws Exception
	 */
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {

		System.out.println("@BeforeClass");
	}

	/**
	 * 资源清理
	 *
	 * @throws Exception
	 */
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		System.out.println("@AfterClass");
	}

	/**
	 * 方法执行前
	 *
	 * @throws Exception
	 */
	@Before
	public void setUp() throws Exception {
		System.out.println("@@Before");

	}

	/**
	 * 方法执行后
	 *
	 * @throws Exception
	 */
	@After
	public void tearDown() throws Exception {
		System.out.println("@@After");
	}

	@Test
	public void testAdd() {
		System.out.println("testAdd");
		assertEquals(5, new Calculate().add(3, 3));
	}

	@Test
	public void testMutiply() {
		assertEquals(9, new Calculate().mutiply(3, 3));
	}
}
@BeforeClass表示的是测试类测试所用方法前进行的操作。
@AfterClass表示的是测试类测试所有方法后执行的操作。
@Before表示的是执行每个测试方法前进行的操作。@After表示的是执行每个测试方法后所执行的操作。下面这个类演示了一些常用的测试注解所使用的方式。
package com.dong.util;

import static org.junit.Assert.assertEquals;

import org.junit.Ignore;
import org.junit.Test;

/**
 * junit注解
 *
 * @author 95
 *
 */
public class AnotationTest {

	/**
	 * @Test把一个普通方法设置为测试方法
	 * @Test(expected = ArithmeticException.class) 表示预期会抛出一个异常
	 * @Test(timeout=毫秒) 测试死循环和性能测试
	 * @BeforeClass 所有方法执行前执行
	 * @AfterClass 所有方法执行后执行
	 * @Before 每个方法执行前执行
	 * @After 每个方法执行后执行
	 * @Ignore 忽略
	 * @RunWith可以更改测试运行器 org.junit.runner.Runner
	 */

	/**
	 * @Test(expected = ArithmeticException.class) 表示预期会抛出一个异常
	 */
	@Test
	public void testDivide() {
		assertEquals(1, new Calculate().divide(3, 0));
	}

	/**
	 * @Test(timeout=毫秒) 测试死循环和性能测试
	 */
	@Ignore
	@Test(timeout = 1000)
	public void testWhile() {
		while (true) {
			assertEquals(1, new Calculate().divide(3, 3));
		}
	}

	@Test(timeout = 2000)
	public void testReadFile() {
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

  在一些情况下,可能需要同时测试多个测试用例,如果每次都写assert则显得很麻烦。比如我们想测试加法时候,有这样2个样例 1+2?=3  ,2+2?=4。可以使用如下代码进行实现。

package com.dong.util;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class ParameterTest {
	/**
	 * 1更改默认的测试运行期为@RunWith(Parameterized.class) 2声明变量来存放预期值和结果值
	 * 3声明一个返回值为Collection的公共静态方法,并使用@Parameters修饰
	 * 4为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
	 */
	int expected = 0;
	int input1 = 0;
	int input2 = 0;

	@Parameters
	public static Collection<Object[]> t() {
		return Arrays.asList(new Object[][] { { 3, 1, 2 }, { 4, 2, 2 }

		});

	}

	public ParameterTest(int expected, int input1, int input2) {
		super();
		this.expected = expected;
		this.input1 = input1;
		this.input2 = input2;
	}

	@Test
	public void testAdd() {
		assertEquals(expected, new Calculate().add(input1, input2));

	}

}

  当我们一次想运行制定的几个测试类的时候,我们可以使用suite。使用方法如下。

  

/**
 * 测试套件
 *
 * @author 95
 *
 */
@RunWith(Suite.class) // 测试套件入口类,一次运行多个类
@Suite.SuiteClasses({ TastTest.class, TastTest1.class, TastTest4.class })
public class SuiteTest {
	/**
	 * 1、 测试套件就是组织测试类一起运行的
	 *
	 * 写一个作为测试套件的入口类,这个类不包含其他的方法 更改测试类运行期Suite.class
	 * 将要测试的类作为数组传入到Suite.SuiteClass({})
	 */

}

  


  

时间: 2024-12-29 06:50:11

在eclipse之中使用Junit的相关文章

Eclipse中使用Junit编写测试用例

Eclipse自带Junit插件,不用安装就能在项目中编写测试用例,非常方便. 在项目中添加Junit库 在编写测试用例之前,需要先引入Junit.对项目根目录右键,选择Properties,Java Build Path,Libraries,如图: Add Library,选择Junit: 点Next选择Junit版本,然后Finish就完成了引入. 编写测试用例 假设有如下类: package choon.test; public class Calculate { public int A

eclipse上使用JUnit框架进行单元测试

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写. 先 简单解释一下什么是Annotation,这个单词一般是翻译成元数据.元数据是什么?元数据就是描述数据的数据.也就是说,这个东西在Java里面可以 用来和public.static等关键字一样来修饰类名.方法名.变量名.修饰的作用描述这个数据是做什么用的,差不多和public描述这个数据是公 有的一样.想具体了解可以看Core    Java2.废话不多说了,直接进入正题

在Eclipse之中调试FastDFS-storage

FDFS版本为5.03 1.首先在eclipse之中创建一个C/C++工程,取名为FastDFS_v5.03 2.将FastDFS源码解压后拷贝到新创建的工程目录下,然后在ecipse之中刷新下工程就可以看到新拷贝如的文件如下: 3.修改工程目录下的make.sh,增加定位到绝对目录,并且去除编译优化(使得程序按照顺序执行) 1)在make.sh的开头添加两行 cd /Users/bigfish/Documents/workspace/c++/FastDFS_v5.03 (修改成绝对路径) pw

Android studio及eclipse中的junit单元测试

转载请标明出处:http://blog.csdn.net/nmyangmo/article/details/51179106 前一段时间有人问我单元测试的相关内容,我稍作总结做日志如下: 因为我接触eclipse比较早,所以我先说一下eclipse中Junit的配置.首先我们先建一个空工程,并添加一个测试类JunitTest.java 第二步:导入Junit库,工程名--->右键-->Build Path--->Add Libraries... 第三步:点击Add Libraries..

(软件项目管理)在eclipse里使用junit进行单元测试以及Maven的学习

1.使用Junit对一个简单的打印函数进行测试 首先在project里建立一个test类 添加Junit library 在该project里新建一个Junit Test case,并关联好对应的待测试类,选择要测试的函数 对mytest内容简单修改 运行(Run as Junit test) 2.关于Maven 先检测是否完整配置java环境变量 首先在cmd输入java,发现命令无法识别,在环境变量里配置好java环境变量 发现是path里未包含java路径,而且没有CLASSPATH变量,

Junit(1)在Eclipse中使用JUnit4进行单元测试

我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这 一小部分功能是正确的.但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情.所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试. 传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在

Junit 4 Tutorials(Junit 4 教程) 一、Junit简介及Junit Eclipse 教程

Junit 测试框架简介 测试框架是最流行的Java单元测试框架.Junit被用来开发对Java类的单元测试.它就是一个类包,提供了各种方法来测试Java类中的方法(method). Junit 4 特性 简单的注解,提供书写Junit测试的基本特性 断言方法(Assert Methods)比较测试的方法执行结果值和期望值 @Ignore 注解,忽略测试方法或者测试类的执行 期望异常测试 超时测试 , 测试方法的执行时间 测试组件,一起运行一些测试类 参数化测试, 以不同的输入参数值测试方法 J

Java高级特性 第10节 IDEA和Eclipse整合JUnit测试框架

一.IDEA整合Junit测试框架 1.安装插件 打开File菜单的下拉菜单settings[设置] : 点击左侧Plugins[插件]菜单 在输入框中输入JUnitGenerator 2.0,点击Install 重启IDEA 2.配置插件 打开settings[设置] 点击左侧Other Settings[其他]菜单 点击左侧JUnit Generator菜单 点击Properties[属性]页签 修改Output Path[输出路径]为${SOURCEPATH}/../../test/jav

Java Junit测试框架

Java    Junit测试框架 1.相关概念 ? JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. ? 白盒测试:把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人 员是公开的. ? 回归测试:软件或环境的修复或更正后的再测试,自动测试工具对这类测试尤其有用. ? 单元测试:最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设