Eclipse使用Junit写测试

1.新建项目

2.鼠标放在项目名称上->右键Build Path->Add Library->选择junit4->finish.

3.安装converage

help->在Eclipse Marketplace中下载安装EclEmma Java Code Coverage插件,如下所示:

重启eclipse

4.创建一个待测试类

package com.bjut.junit;

public class SaleMachine {
	private int countOfBeer, countOfOrangeJuice, countOfFiveCents, countOfOneDollar;
	private String[] typeOfGoods = { "Beer", "OrangeJuice" };
	private String resultOfDeal;

	public SaleMachine() {
		initial();
	}

	private void initial() {
		countOfBeer = 6;
		countOfOrangeJuice = 6;
		countOfFiveCents = 6;
		countOfOneDollar = 6;
	}

	public SaleMachine(int fiveCents, int oneDollar, int numOfBeer, int numOfOrange)
	// 便于测试的初始化函数
	{
		countOfFiveCents = fiveCents;
		countOfOneDollar = oneDollar;
		countOfBeer = numOfBeer;
		countOfOrangeJuice = numOfOrange;
	}

	public String currentState() {
		String state = "Current State\n" + 
	"Beer:" + countOfBeer + "\n" + 
	"Orange Juice:"+ countOfOrangeJuice + "\n" + 
	"5 Cents:" + countOfFiveCents + "\n" + 
	"1 Dollar:"+ countOfOneDollar;
		return state;
	}

	public String operation(String type, String money)
	// type是用户选择的产品,money是用户投币种类
	{
		if (money.equalsIgnoreCase("5C")) // 如果用户投入5角钱
		{
			if (type.equals(typeOfGoods[0])) // 如果用户选择啤酒
			{
				if (countOfBeer > 0) // 如果还有啤酒
				{
					countOfBeer--;
					countOfFiveCents++;
					resultOfDeal = "Input Information\n" + "Type: Beer;  Money: 5 Cents;  Change: 0\n\n"
							+ currentState();
					return resultOfDeal;
				} else {
					resultOfDeal = "Failure Information\n" + "Beer Shortage";
					return resultOfDeal;
				}
			} else if (type.equals(typeOfGoods[1])) // 如果用户选择橙汁
			{
				if (countOfOrangeJuice > 0) {
					countOfOrangeJuice--;
					countOfFiveCents++;
					resultOfDeal = "Input Information\n" + "Type: OrangeJuice;   Money: 5 Cents;   Change: 0\n\n"
							+ currentState();
					return resultOfDeal;
				} else {
					resultOfDeal = "Failure Information\n" + "OrangeJuice Shortage";
					return resultOfDeal;
				}
			} else {
				resultOfDeal = "Failure Information\n" + "Type Error";
				return resultOfDeal;
			}
		} else if (money.equalsIgnoreCase("1D")) // 如果用户投入一元钱
		{
			if (countOfFiveCents > 0) // 如果有零钱找
			{
				if (type.equals(typeOfGoods[0]) && countOfBeer > 0) // 如果用户选择啤酒且还有啤酒
				{
					countOfBeer--;
					countOfFiveCents--;
					countOfOneDollar++;
					resultOfDeal = "Input Information\n" + "Type: Beer;   Money: 1 Dollar;   Change: 5 Cents\n\n"
							+ currentState();
					return resultOfDeal;
				} else if (type.equals(typeOfGoods[1]) && countOfOrangeJuice > 0)
				// 如果用户选择橙汁且还有橙汁
				{
					countOfOrangeJuice--;
					countOfFiveCents--;
					countOfOneDollar++;
					resultOfDeal = "Input Information\n" + "Type: OrangeJuice;  Money: 1 Dollar;  Change: 5 Cents\n\n"
							+ currentState();
					return resultOfDeal;
				} else {
					if (type.equals(typeOfGoods[0]) && countOfBeer <= 0) {
						resultOfDeal = "Failure Information\n" + "Beer Shortage";
						return resultOfDeal;
					} else if (type.equals(typeOfGoods[1]) && countOfOrangeJuice <= 0) {
						resultOfDeal = "Failure Information\n" + "OrangeJuice Shortage";
						return resultOfDeal;
					} else {
						resultOfDeal = "Failure Information\n" + "Type Error";
						return resultOfDeal;
					}
				}
			} else {
				resultOfDeal = "Failure Information\n" + "Change Shortage";
				return resultOfDeal;
			}
		} else {
			resultOfDeal = "Failure Information\n" + "Money Error";
			return resultOfDeal;
		}
	}
}

5.在包右键new->Junit test case->输入类名->编写测试类

package com.bjut.junit;

import static org.junit.Assert.*;

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;

import junit.framework.Assert;


public class SaleMachineTest {

   private static SaleMachine machine=new SaleMachine();
    
    
	
	@Test
	public void test1() {
		machine=new SaleMachine();
		String res=machine.operation("Beer", "5C");
//		System.out.println(res);
		assertEquals("Input Information\n" + 
				"Type: Beer;  Money: 5 Cents;  Change: 0\n" + 
				"\n" + 
				"Current State\n" + 
				"Beer:5\n" + 
				"Orange Juice:6\n" + 
				"5 Cents:7\n" + 
				"1 Dollar:6",res);
	}
	
	@Test
	public void test2() {
		machine=new SaleMachine();
		String res=machine.operation("OrangeJuice", "5C");
//		System.out.println(res);
		assertEquals("Input Information\n" + 
				"Type: OrangeJuice;   Money: 5 Cents;   Change: 0\n" + 
				"\n" + 
				"Current State\n" + 
				"Beer:6\n" + 
				"Orange Juice:5\n" + 
				"5 Cents:7\n" + 
				"1 Dollar:6", res);
	}
	
	@Test
	public void test3() {
		machine=new SaleMachine();
		String res=machine.operation("Beer", "1D");
//		System.out.println(res);
		assertEquals("Input Information\n" + 
				"Type: Beer;   Money: 1 Dollar;   Change: 5 Cents\n" + 
				"\n" + 
				"Current State\n" + 
				"Beer:5\n" + 
				"Orange Juice:6\n" + 
				"5 Cents:5\n" + 
				"1 Dollar:7",res);
	}
	
	@Test
	public void test4() {
		machine=new SaleMachine();
		String res=machine.operation("OrangeJuice", "1D");
		System.out.println(res);
		assertEquals("Input Information\n" + 
				"Type: OrangeJuice;  Money: 1 Dollar;  Change: 5 Cents\n" + 
				"\n" + 
				"Current State\n" + 
				"Beer:6\n" + 
				"Orange Juice:5\n" + 
				"5 Cents:5\n" + 
				"1 Dollar:7",res);
	}
	
	@Test
	public void test5() {
		machine=new SaleMachine(0,0,6,6);
		String res=machine.operation("Beer", "1D");
		assertEquals("Failure Information\n" + 
				"Change Shortage",res);
	}
	
	@Test
	public void test6() {
		machine=new SaleMachine(0,0,6,6);
		String res=machine.operation("OrangeJuice", "1D");
		assertEquals("Failure Information\n" + 
				"Change Shortage",res);
	}
	
	@Test
	public void test7() {
		machine=new SaleMachine(6,6,0,6);
		String res=machine.operation("Beer", "1D");
		assertEquals("Failure Information\n" + 
				"Beer Shortage",res);
	}
	
	@Test
	public void test8() {
		machine=new SaleMachine(6,6,6,0);
		String res=machine.operation("OrangeJuice", "5C");
		assertEquals("Failure Information\n" + 
				"OrangeJuice Shortage",res);
	}
	
	@Test
	public void test9() {
		machine=new SaleMachine(6,6,6,6);
		String res=machine.operation("Beer", "5G");
		assertEquals("Failure Information\n" + 
				"Money Error",res);
	}
	
	@Test
	public void test10() {
		machine=new SaleMachine(6,6,6,6);
		String res=machine.operation("Coca-Cola", "1D");
		assertEquals("Failure Information\n" + 
				"Type Error",res);
	}
	
	@Test
	public void test11() {
		machine=new SaleMachine(6,6,0,6);
		String res=machine.operation("Beer", "5C");
		assertEquals("Failure Information\n" + 
				"Beer Shortage",res);
	}
	
	@Test
	public void test12() {
		machine=new SaleMachine(6,6,6,6);
		String res=machine.operation("Coca-Cola", "5C");
		assertEquals("Failure Information\n" + 
				"Type Error",res);
	}
	
	
	@Test
	public void test13() {
		machine=new SaleMachine(6,6,6,0);
		String res=machine.operation("OrangeJuice", "1D");
		assertEquals("Failure Information\n" + 
				"OrangeJuice Shortage",res);
	}
	
	@Test
	public void test14() {
		machine=new SaleMachine(6,6,-1,6);
		String res=machine.operation("Beer", "1D");
		assertEquals("Failure Information\n" + 
				"Beer Shortage",res);
	}
	
	
	@Test
	public void test15() {
		machine=new SaleMachine(6,6,6,-1);
		String res=machine.operation("OrangeJuice", "1D");
		assertEquals("Failure Information\n" + 
				"OrangeJuice Shortage",res);
	}
	
}

6.运行测试类

在最低边的coverage栏会有覆盖率

posted @ 2020-05-12 22:41  梦小冷  阅读(841)  评论(0)    收藏  举报