私はこれでしばらく頭を壁にぶつけていました -
別のクラスのオブジェクトのリストを作成する方法があります。
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);
}
テスト クラスの別の場所で追加した従業員の数に基づくと、5 人のはずです。list.get を範囲外に設定して、実際に 5 つあることを確認できます。ただし、問題は、5 つのレコードすべてが null で 0.0 であることです。従業員レコードごとに名前と支払いが必要です。ただし、アサーションエラーが戻ってきて、期待したことを示していますが、実際の値は 0.0 (または list.get(0).getName() を試すと null) です。
あなたの助けと知恵を前もって感謝します。