① 通过Junit 4.0对出差请假申请问题进行自动化的整体单元测试。将所有方法放在一个测试类中进行单元测试。 ② 测试用例选择实验4中采用基本路径测试法设计的13个测试用例(假设请假日期为2023-6-6),精心挑选边界值,便于缺陷的发现。 ③ 将13个测试用例分别对应到BusinessLeave类每个方法的测试中,比如挑选T2~T4作为testPhoneNum()方法的测试数据,若无法对应,则可作为testApplication()方法的测试数据。 ④ 请注意开始日期和结束日期的输入格式为“yyyy-MM-dd”。 ⑤ 由于测试用例选值采用了边界值分析法,则开始日期项具有时效性,因此执行测试用例表格T5、T11要求开始日期项必须根据当前执行日期做出调整。
时间: 2024-04-04 19:31:19 浏览: 13
好的,你的问题是关于对出差请假申请问题进行自动化整体单元测试的实现方式和注意事项。具体来说,需要使用Junit 4.0进行测试,选择实验4中基本路径测试法设计的13个测试用例进行测试,注意日期格式和开始日期的时效性调整。此外,需要将每个测试用例分别对应到BusinessLeave类的每个方法的测试中进行测试。
相关问题
试通过 JUnit 单元测试框架工具为出差请假申请问题编写测试脚本并运行测试用例。
好的,我会尽力回答你的问题。
首先,我们需要定义出差请假申请的需求,以便编写测试用例。假设该需求如下:
1. 用户可以提交出差请假申请。
2. 用户需要填写申请表,包括申请人姓名、出差时间、请假时间、出差地点、请假原因等信息。
3. 用户提交申请后,系统需要自动生成一份申请单,并将其保存到数据库中。
4. 管理员可以查看所有申请单,并对其进行批准或拒绝操作。
接下来,我们可以使用 JUnit 单元测试框架,编写测试用例来验证这些需求是否被满足。具体步骤如下:
1. 创建一个名为 "TestLeaveRequest" 的测试类,并在其中添加测试方法。
2. 在测试方法中,创建一个模拟的出差请假申请对象,并设置其属性。
3. 调用系统的提交申请方法,将模拟的申请对象提交到系统中。
4. 验证系统是否正确生成申请单,并将其保存到数据库中。
5. 创建一个模拟的管理员对象,并调用系统的查询申请单方法,获取所有申请单列表。
6. 验证系统是否正确返回所有申请单信息。
7. 调用系统的批准或拒绝申请方法,对申请单进行操作。
8. 验证系统是否正确更新申请单状态。
下面是一个示例测试用例:
```java
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
public class TestLeaveRequest {
@Test
public void testSubmitRequest() {
// 创建一个模拟的出差请假申请对象
LeaveRequest request = new LeaveRequest();
request.setApplicant("张三");
request.setTripTime("2021-05-01");
request.setLeaveTime("2021-05-10");
request.setDestination("上海");
request.setReason("参加会议");
// 调用系统的提交申请方法
LeaveRequestService service = new LeaveRequestService();
service.submitRequest(request);
// 验证系统是否正确生成申请单,并将其保存到数据库中
List<LeaveRequest> requests = service.getAllRequests();
assertNotNull(requests);
assertTrue(requests.size() > 0);
LeaveRequest savedRequest = requests.get(0);
assertEquals(request.getApplicant(), savedRequest.getApplicant());
assertEquals(request.getTripTime(), savedRequest.getTripTime());
assertEquals(request.getLeaveTime(), savedRequest.getLeaveTime());
assertEquals(request.getDestination(), savedRequest.getDestination());
assertEquals(request.getReason(), savedRequest.getReason());
assertNotNull(savedRequest.getRequestId());
// 创建一个模拟的管理员对象
Admin admin = new Admin();
admin.setUsername("admin");
admin.setPassword("admin");
// 调用系统的查询申请单方法,获取所有申请单列表
List<LeaveRequest> allRequests = service.queryRequests(admin);
// 验证系统是否正确返回所有申请单信息
assertNotNull(allRequests);
assertTrue(allRequests.size() > 0);
assertEquals(savedRequest, allRequests.get(0));
// 调用系统的批准申请方法,对申请单进行操作
service.approveRequest(admin, savedRequest.getRequestId());
// 验证系统是否正确更新申请单状态
List<LeaveRequest> approvedRequests = service.queryRequests(admin);
assertNotNull(approvedRequests);
assertTrue(approvedRequests.size() > 0);
assertEquals(LeaveRequestStatus.APPROVED, approvedRequests.get(0).getStatus());
}
}
```
我们可以使用 Eclipse 等集成开发环境来运行这个测试用例,或者使用 Maven 等构建工具来自动化运行测试用例。
希望这能帮助你解决问题!
编写测试程序,要求如下:① 通过Junit 4.0对出差请假申请问题进行自动化的整体单元测试。将所有方法放在一个测试类中进行单元测试。 ② 测试用例选择实验4中采用基本路径测试法设计的13个测试用例(假设请假日期为2023-6-6),精心挑选边界值,便于缺陷的发现。 ③ 将13个测试用例分别对应到BusinessLeave类每个方法的测试中,比如挑选T2~T4作为testPhoneNum()方法的测试数据,若无法对应,则可作为testApplication()方法的测试数据。 ④ 请注意开始日期和结束日期的输入格式为“yyyy-MM-dd”。 ⑤ 由于测试用例选值采用了边界值分析法,则开始日期项具有时效性,因此执行测试用例表格T5、T11要求开始日期项必须根据当前执行日期做出调整。
好的,下面是一个可能的测试程序实现,供你参考:
```java
import static org.junit.Assert.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.junit.Test;
public class BusinessLeaveTest {
@Test
public void testPhoneNum() {
BusinessLeave bl = new BusinessLeave();
assertFalse(bl.application("上海", "1351234567c", "2023-6-12", "2023-6-20", "飞机", "2"));
assertFalse(bl.application("上海", "1351234567", "2023-6-12", "2023-6-20", "飞机", "2"));
assertFalse(bl.application("上海", "23512345678", "2023-6-12", "2023-6-20", "飞机", "2"));
}
@Test
public void testDate() {
BusinessLeave bl = new BusinessLeave();
assertFalse(bl.application("上海", "13512345678", "2023-6-5", "2023-6-20", "飞机", "2"));
assertFalse(bl.application("上海", "13512345678", "2023-6-12", "2023-6-11", "飞机", "2"));
assertFalse(bl.application("上海", "13512345678", "2023-6-12", "2023-7-13", "飞机", "2"));
}
@Test
public void testTransportation() {
BusinessLeave bl = new BusinessLeave();
assertFalse(bl.application("上海", "13512345678", "2023-6-12", "2023-6-20", "", "2"));
}
@Test
public void testAccompanyNum() {
BusinessLeave bl = new BusinessLeave();
assertFalse(bl.application("上海", "13512345678", "2023-6-12", "2023-6-20", "自驾", "-1"));
assertFalse(bl.application("上海", "13512345678", "2023-6-12", "2023-6-20", "火车", "2.5"));
}
@Test
public void testValidApplication() {
BusinessLeave bl = new BusinessLeave();
assertTrue(bl.application("上海", "13512345678", "2023-6-6", "2023-6-20", "自驾", "2"));
assertTrue(bl.application("上海", "13512345678", "2023-6-12", "2023-6-12", "火车", "2"));
assertTrue(bl.application("上海", "13512345678", "2023-6-12", "2023-6-20", "飞机", "0"));
}
@Test
public void testValidDate() {
BusinessLeave bl = new BusinessLeave();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date currentDate = cal.getTime();
cal.add(Calendar.DATE, -1);
Date pastDate = cal.getTime();
String currentDateString = format.format(currentDate);
String pastDateString = format.format(pastDate);
assertFalse(bl.application("上海", "13512345678", pastDateString, "2023-6-20", "飞机", "2"));
assertTrue(bl.application("上海", "13512345678", currentDateString, "2023-6-20", "自驾", "2"));
}
}
```
在这个测试程序中,我们首先在每个测试方法中创建了一个BusinessLeave对象,然后分别对各个方法中的测试用例进行测试。在testValidDate()方法中,我们使用了一个SimpleDateFormat对象来获取当前日期,并将其转换为字符串格式,然后将其作为测试用例的开始日期。这样就可以根据当前日期自动调整测试用例T5和T11中的开始日期了。最后,我们使用了JUnit的assert方法来判断测试结果是否符合预期。