gpt4 book ai didi

java - 列表由空记录填充 - junit 测试失败

转载 作者:行者123 更新时间:2023-12-02 07:25:17 25 4
gpt4 key购买 nike

我已经用这个头撞墙有一段时间了 -

我有一个方法来创建另一个类的对象列表:

    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 也是由其他一些类实现的接口(interface) - 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)。

预先感谢您的帮助和智慧。

最佳答案

那么你是如何设置成员的呢?

private String employeeName;
private double currentPay;

public PayrollRecord(String employeeName, double currentPay) {

}

在构造函数中,您需要分配给成员,例如

this.employeeName = employeeName;

仅仅使用参数调用构造函数是不够的。需要使用参数来填充类的成员(直接或通过某种操作)。

这里一个有用的技术是将成员变量设置为final。这意味着:

  1. 初始化后您无法更改它们的值
  2. 您必须立即或在构造函数中初始化这些值

您可能认为这是一个限制。然而,很多时候,您会发现您只设置此信息一次(我怀疑对于您的任务,姓名和薪水将保持不变)。如果您需要更改其中一项或多项,可以轻松删除final 限定条件。

private final String employeeName;
private final double currentPay;

public PayrollRecord(String employeeName, double currentPay) {
this.employeeName = employeeName;
// etc...
}

确保成员不更改意味着类实例是不可变的。一般来说,这是一件好事。推理和调试不可变类很容易,而且它们是隐式线程安全的。

关于java - 列表由空记录填充 - junit 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com