问题遇到的现象和发生背景
一個接口
```java
public interface RemoteControlCar {
void drive();
int getDistanceTravelled();
}
并且有兩個類實現了這個接口,
```java
public class ExperimentalRemoteControlCar implements RemoteControlCar {
private final int SPEED = 20;
private int distanceTraveled=0;
public void drive() {
distanceTraveled += SPEED;
}
public int getDistanceTravelled() {
return distanceTraveled;
}
}
```java
class ProductionRemoteControlCar implements RemoteControlCar {
private final int SPEED = 10;
private int distanceTraveled;
private int numberOfVictories;
public void drive() {
distanceTraveled += SPEED;
}
public int getDistanceTravelled() {
return distanceTraveled;
}
public void setNumberOfVictories(int numberOfVictories) {
this.numberOfVictories = numberOfVictories;
}
public int getNumberOfVictories() {
return numberOfVictories;
}
}
public class TestTrack {
public static void race(RemoteControlCar car)
{
car.drive();
}
public static List<ProductionRemoteControlCar> getRankedCars(ProductionRemoteControlCar prc1,
ProductionRemoteControlCar prc2
) {
List<ProductionRemoteControlCar> prolist=new ArrayList<>();
prolist.add(prc1);
prolist.add(prc2);
prolist.sort((a,b) -> a.getNumberOfVictories()-b.getNumberOfVictories());
return prolist;
}
}
測試類
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class RemoteControlCarTest {
@Test
public void race() {
ProductionRemoteControlCar productionCar = new ProductionRemoteControlCar();
ExperimentalRemoteControlCar experimentalCar = new ExperimentalRemoteControlCar();
TestTrack.race((RemoteControlCar) productionCar);
TestTrack.race((RemoteControlCar) productionCar);
TestTrack.race((RemoteControlCar) experimentalCar);
TestTrack.race((RemoteControlCar) experimentalCar);
assertThat(experimentalCar.getDistanceTravelled() - productionCar.getDistanceTravelled()).isEqualTo(20);
}
@Test
public void rankCars() {
ProductionRemoteControlCar prc1 = new ProductionRemoteControlCar();
ProductionRemoteControlCar prc2 = new ProductionRemoteControlCar();
prc1.setNumberOfVictories(3);
prc2.setNumberOfVictories(2);
List<ProductionRemoteControlCar> rankings = TestTrack.getRankedCars(prc1, prc2);
assertThat(rankings.get(1)).isEqualTo(prc1);
}
@Test
public void ensureCarsAreComparables() {
assertThat(RemoteControlCar.class).isAssignableFrom(ProductionRemoteControlCar.class);
}
}
本地測試全部通過,
但是提交至exercism.org后報錯如下: