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栏会有覆盖率


浙公网安备 33010602011771号