在这里,无涯教程将看到一个使用POJO类,业务逻辑类和一个测试类进行JUnit测试的完整示例,该类将由测试运行程序运行。
在C:\> JUNIT_WORKSPACE中创建EmployeeDetails.java,这是一个POJO类。
public class EmployeeDetails {private String name; private double monthlySalary; private int age;
/**
- @return the name */
public String getName() { return name; }
/**
- @param name the name to set */
public void setName(String name) { this.name = name; }
/**
- @return the monthlySalary */
public double getMonthlySalary() { return monthlySalary; }
/**
- @param monthlySalary the monthlySalary to set */
public void setMonthlySalary(double monthlySalary) { this.monthlySalary = monthlySalary; }
/**
- @return the age */ public int getAge() { return age; }
/**
- @param age the age to set */ public void setAge(int age) { this.age = age; } }
在C:\> JUNIT_WORKSPACE中创建一个名为EmpBusinessLogic.java的文件,其中包含业务逻辑。
public class EmpBusinessLogic {
//计算员工的年薪
public double calculateYearlySalary(EmployeeDetails employeeDetails) {
double yearlySalary = 0;
yearlySalary = employeeDetails.getMonthlySalary() * 12;
return yearlySalary;
}
//计算员工的评估金额
public double calculateAppraisal(EmployeeDetails employeeDetails) {
double appraisal = 0;
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">employeeDetails</span><span class="pun">.</span><span class="pln">getMonthlySalary</span><span class="pun">()</span><span class="pln"> </span><span class="pun"><</span><span class="pln"> </span><span class="lit">10000</span><span class="pun">){</span><span class="pln">
appraisal </span><span class="pun">=</span><span class="pln"> </span><span class="lit">500</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="kwd">else</span><span class="pun">{</span><span class="pln">
appraisal </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1000</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> appraisal</span><span class="pun">;</span><span class="pln">
}
}
在C:\> JUNIT_WORKSPACE中创建一个名为TestEmployeeDetails.java的文件,其中包含要测试的测试用例。
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestEmployeeDetails {
EmpBusinessLogic empBusinessLogic = new EmpBusinessLogic();
EmployeeDetails employee = new EmployeeDetails();
//测试检查评估
@Test
public void testCalculateAppriasal() {
employee.setName("Rajeev");
employee.setAge(25);
employee.setMonthlySalary(8000);
</span><span class="kwd">double</span><span class="pln"> appraisal </span><span class="pun">=</span><span class="pln"> empBusinessLogic</span><span class="pun">.</span><span class="pln">calculateAppraisal</span><span class="pun">(</span><span class="pln">employee</span><span class="pun">);</span><span class="pln">
assertEquals</span><span class="pun">(</span><span class="lit">500</span><span class="pun">,</span><span class="pln"> appraisal</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">);</span><span class="pln">
}
//测试检查年薪
@Test
public void testCalculateYearlySalary() {
employee.setName("Rajeev");
employee.setAge(25);
employee.setMonthlySalary(8000);
</span><span class="kwd">double</span><span class="pln"> salary </span><span class="pun">=</span><span class="pln"> empBusinessLogic</span><span class="pun">.</span><span class="pln">calculateYearlySalary</span><span class="pun">(</span><span class="pln">employee</span><span class="pun">);</span><span class="pln">
assertEquals</span><span class="pun">(</span><span class="lit">96000</span><span class="pun">,</span><span class="pln"> salary</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">);</span><span class="pln">
}
}
接下来,在C:\> JUNIT WORKSPACE中创建一个名为TestRunner.java的Java类字段以执行测试用例。
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestEmployeeDetails.class);
</span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Failure</span><span class="pln"> failure </span><span class="pun">:</span><span class="pln"> result</span><span class="pun">.</span><span class="pln">getFailures</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">failure</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">result</span><span class="pun">.</span><span class="pln">wasSuccessful</span><span class="pun">());</span><span class="pln">
}
}
使用javac编译测试用例和Test Runner类。
C:\JUNIT_WORKSPACE>javac EmployeeDetails.java EmpBusinessLogic.java TestEmployeeDetails.java TestRunner.java
现在运行Test Runner,它将运行在提供的Test Case类中定义的测试用例。
C:\JUNIT_WORKSPACE>java TestRunner
验证输出。
true