Junit入门到掌握-5-JUnit基础-简单的真实单元测试项目练习

接下来开始写一个单元测试用例练习,这个就不是单元测试方法中执行打印语句,而是真正的模拟测试代码来进行的。我网上找了一个简单代码来作为我们单元测试的项目。

1.被测项目

这么一个项目,就两个Java类文件,这个项目意思是蛋白质跟踪的一个功能实现。里面有一些蛋白质添加和蛋白质减量,和是否达标等纪录的方法。下面是两个文件的具体代码。

package com.anthony.protein;

public class HistoryItem {
	private final int id;
	private final int amount;
	private final String operation;
	private final int total;
	
	public HistoryItem(int id, int amount, String operation, int total){
	    this.id = id;
	    this.amount = amount;
	    this.operation = operation;
	    this.total = total;

	}
	
	public int getId(){
	    return id;
	}

	public int getAmount(){
	    return amount;
	}

	public String getOperation(){
	    return operation;
	}

	public int getTotal(){
	    return total;
	}

}

这个像一个Java Bean类,四个字段,四个get方法,没有set方法,一个带参数的构造函数。

package com.anthony.protein;

import java.util.ArrayList;
import java.util.List;

public class TrackingService {
	
	private int total;
	private int goal;
	private List<HistoryItem> history = new ArrayList<HistoryItem>();
	private int historyId = 0;

	public void addProtein(int amount){
	    total += amount;
	    history.add(new HistoryItem(historyId++, amount,"add", total));
	}

	public void removeProtein(int amount){
	    total -= amount;
	    if(total < 0){
	        total = 0;
	    }
	    history.add(new HistoryItem(historyId++, amount,"subtract", total));
	}
	
	public int getTotal(){
	    return total;
	}

	public void setGoal(int value){
	    goal = value;
	}

	public boolean isGoalMet(){
	    return total >= goal;
	}

	public List<HistoryItem> getHistory(){
	    return history;
	}

}

这个方法就是我们重点要测试的业务代码。一个加蛋白方法,一个减蛋白方法,一个获取总量方法,一个获取目标方法,一个判断目标是否达标方法,一个获取历史纪录方法。这些方法,后面我们Junit单元测试都需要去覆盖到进行测试。

 

2.创建单元测试项目和配置

被测试工程已经准备好了,接下来,我们需要创建一个单元测试工程。我认为这种方式很对,被测工程一般都是开发给你的,写单元测试的同学应该新建一个项目,而不是在别人工程里添加测试包,以免干扰别人开发。

2.1 在Eclipse上创建一个Java工程

一般单元测试工程名称是被测对象名称后面加上Test.

2.2 配置Junit被测对象,进行关联

在src右键,new->other-Junit Test Case

add build path

点击OK之后,默认给你创建一个JUnit单元测试用例,运行这个,结果是失败,这个是期待结果。

然后选择需要被测工程进行关联

右键单元测试这个工程,选择Build Path-> Config Build Path..., 在project中添加我们被测工程进来。

到这里,我们所有前提环境都准备好了,可以开始针对这个被测工程进行写单元测试用例。

 

3.第一个单元测试用例

首先,在单元测试工程的这个包下新建一个TrackingService.java的一个Java类,用来写单元测试用例。还是建议给包取一个名称,然后再创建一个Junit Test Case, 这个更规范一些。

package test;
import static org.junit.Assert.*;

import org.junit.Test;

import com.anthony.protein.TrackingService;

public class TrackingServiceTests {

	@Test
	public void newTrackingServiceTotalIsZero() {
		TrackingService ts = new TrackingService();
		assertEquals("Tracking service total was not zero", 0, ts.getTotal());
	}

}

上面这个单元测试的目的是,一上来,刚初始化的TrackingService对象中的total的值是为0,如果你学习过Java,你应该知道,再类中,字段如果是int类型,默认初始化就是为0,如果是引用数据类型,默认就是为null。

解释以下这个用例,用例名称建议写一些有意义的方法名,让别人一看就知道干什么。先new一个TrackingService对象,然后利用JUnit的断言方法进行判断total这个值是不是等于0,如果不等于0,这个“Tracking service total was not zero”就会被打印出来,我们这里把0,改成1,再来运行这个测试用例。

第一行就打印出这个消息,然后告诉我们期待结果是1,但是实际是0.

 

下面再写一个测试用例,调用addProtein(int mount)方法之后,判断total的值同样增加到和mount一样大小。

package test;
import static org.junit.Assert.*;

import org.junit.Test;

import com.anthony.protein.TrackingService;

public class TrackingServiceTests {

	@Test
	public void newTrackingServiceTotalIsZero() {
		TrackingService ts = new TrackingService();
		assertEquals("Tracking service total was not zero", 1, ts.getTotal());
	}
	
	@Test
	public void whenAddingProteinTotalIsIncreaseByAmount() {
		TrackingService ts = new TrackingService();
		ts.addProtein(10);
		assertEquals(10, ts.getTotal());
	}

}

测试下是运行通过。

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JUnit-BOM(Bill of Materials)是JUnit团队为JUnit 5框架提供的一个特殊模块。它的目的是简化JUnit 5的依赖管理。通过添加JUnit-BOM到你的项目中,你可以使用JUnit 5的所有核心模块和扩展模块,而无需单独指定每个模块的版本。 要使用JUnit-BOM,你需要在你的项目的构建文件中添加一个依赖项。对于Maven项目,可以在`<dependencies>`标签中添加以下内容: ``` <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.x.x</version> <!-- 替换为你想要使用的JUnit 5版本 --> <type>pom</type> <scope>import</scope> </dependency> ``` 对于Gradle项目,可以在`dependencies`块中添加以下内容: ``` dependencies { testImplementation platform('org.junit:junit-bom:5.x.x') // 替换为你想要使用的JUnit 5版本 testImplementation 'org.junit.jupiter:junit-jupiter-api' // 添加其他所需的JUnit 5模块 } ``` 添加JUnit-BOM之后,你可以使用JUnit 5的各种功能,例如编写和运行JUnit单元测试。你可以使用`@Test`注解来标记测试方法,并使用JUnit提供的各种断言和注解来编写强大的单元测试。 通过引用JUnit-BOM,你可以确保你的项目使用与JUnit 5兼容的版本,并且可以轻松管理依赖关系。这使得在不同的项目中使用JUnit 5变得更加简单和一致。 JUnit-BOM的详细信息可以在JUnit官方文档中找到。 JUnit一个用于编写和运行可重复自动化测试的Java单元测试框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值