我用这个把头撞在墙上已经有一段时间了——
我有一个方法来创建另一个类的对象列表:
public List <PayrollRecord> processPayroll() {
List<PayrollRecord> payroll = new ArrayList<PayrollRecord>();
for (Employee employee : staff) {
PayrollRecord payRec = new PayrollRecord(employee.getName(), employee.calculatePay());
payroll.add(payRec);
}
return payroll;
}
staff 是一个 Employee 类对象的列表,可以通过这个方法添加到列表中:
public void addEmployee(Employee employee) {
staff.add(employee);
}
Employee 也是由其他几个类实现的接口——Manager、SalesAssociate 和 StoreEmployee。(你能告诉我我正在尝试完成一项任务吗?也许你们中有些人很熟悉)。
PayrollRecord 类如下所示:
package my.package.ext;
public class PayrollRecord {
private String employeeName;
private double currentPay;
public PayrollRecord(String employeeName, double currentPay) {
}
public double getCurrentPay() {
return this.currentPay;
}
public String getEmployeeName() {
return this.employeeName;
}
}
所以在一个测试类中,我应该能够为员工信息创建一些变量,将一些员工添加到员工,然后运行 processPayroll 方法并对其进行一些断言。我的测试类目前看起来像这样(并且需要更多的断言。在我弄清楚这个基本问题之前,我不会费心添加这些断言):
@Test
public void testPayroll() {
List<PayrollRecord> list = store.processPayroll();
assertEquals(managerTestPay, list.get(0).getCurrentPay(), 0);
}
根据我在测试班其他地方添加的员工数量,应该有五个。我可以设置 list.get 越界并验证确实有 5 个。但是问题是所有 5 条记录都是 null 和 0.0。我应该为每个员工记录命名并支付费用。然而,断言错误又回来了,向我展示了我的预期,但实际值为 0.0(或者当我尝试 list.get(0).getName() 时为 null)。
预先感谢您的帮助和智慧。