クラスがあります
public class Engine {
Double engineSize;
public Engine(){
this.engineSize = 1.0;
}
public Double getEngineSize() {
return engineSize;
}
}
私は別のクラスを持っています:
public class ModelT {
public Engine getEngine() {
return null;
}}
今、私はこのテストに合格したいと思います:
@Test
public void shouldHaveTheCorrectEngineSize(){
assertThat(modelT.getEngine().getEngineSize(), is(1.0));
}
メソッドでEngineタイプを返す方法が難しいので、いくつかの方法を試しましたが、Javaの初心者であるため、知識が限られています。これを行う方法を教えてください。そして、私がさらに読むことができる概念の名前は何ですか。
EngineのインスタンスをModeTクラスに保存する必要があります。
public class ModelT {
private Engine eng;
ModelT( Engine eng){
engine = eng;
}
public Engine getEngine() {
return eng;
}}
次に、メインで-Engineオブジェクトを作成し、modeltに渡します。
Engine eng = new Engine();
ModelT car = new Modelt(eng);
たぶん私はあなたの質問を理解していませんが、ModelTメソッドgetEngineでnullを返しているので、テストは決してokを返しません。
以下のコードで試してください:
public class ModelT {
public Engine getEngine() {
return new Engine();
}
}
あなたが達成しようとしていることを理解するのは少し難しいです。
Instanceofを調べて、Engineのクラスを取得できます。
継承と、クラスを関連付けることができるさまざまな方法を調べたいと思うかもしれません。
あなたのgetterは、Engine
クラスをModelT
に関連付けると、より意味があります。 構成関係
public class ModelT {
private Engine myEngine;
//some setter, DI or Constructors here
public Engine getEngine() {
return myEngine;
}
}
ModelTクラスのpublic double getEngineSize()の値を返すにはどうすればよいですか??
あなたはどこかにあります:
ModelT foo = new ModelT();
Engine e = foo.getEngine();
double s = e.getEngineSize();
getEngine()
メソッドでnull
を返すため、このテストは決して合格しません。 null
でgetEngineSize()
を呼び出すと、NullPointerException
を受け取ります。
あなたはこのようなことをする必要があります:
public class ModelT {
public Engine getEngine() {
return new Engine();
}
}
その後、Engine
を使用できるようになります。
Javaの基本を学ぶ方法についての質問があるため、Oracleから直接 Java-Basics をお勧めします。