抽象クラスを継承するクラスのテストを書く必要があります。 super
の参照を持つメソッドをテストする必要があるときに問題が発生します。コードは次のようになります。抽象クラスを継承するテストクラス
public abstract class AbstractClass{
public String someMethod();
}
public class MyClass extends AbstractClass {
methodToTest(){
//somecode
super.someMethod();
}
}
どのように考えたらいいですか?
EDIT: 私は残念ながら、私は単体テストにはまだ慣れていませんが、ちょうど一瞬前に、これがうまく動作しない理由を理解しました。上記の例のMyClassには、実際にsomeMethodで使用されるAbstractClassで宣言されたいくつかのフィールドを設定する初期化ブロックが含まれています。new AbstractClass.someMethod()
は私にsuper.someMethod
と同じ結果を与えませんでした。そして、私はAbstractClassを初期化できないので、望ましい結果を得ることは不可能です。私は何とかそれを模擬する必要があると考えましたが、私が言ったように私はこれに新しいですし、持っている。ここ
public abstract class AbstractClass{
String fieldA;
public String someMethod(){
//does something with fieldA
}
}
public class MyClass extends AbstractClass {
{
setFieldA("something");
}
methodToTest(){
//some code
super.someMethod();
//returns some string based on the fieldA value
}
}
UPDATEは私のコードのバージョンを更新していることを行う方法がないアイデア。そのための筆記試験で私を助けてください。私はおそらくそこからそれを得ることができるでしょう:
public abstract class AbstractClass{
String fieldA;
public String someMethod(){
fieldA = "String" + fieldA;
}
}
public class MyClass extends AbstractClass {
{
setFieldA("Another String");
}
methodToTest(){
fieldA = fieldA + "Yet Another String";
super.someMethod();
return fieldA;
}
}
いいえ、問題の正確な内容を説明していないためです。テスト中のクラスが別のメソッドを呼び出すと、なぜ問題になるのですか?このメソッドが抽象基本クラスから実際に継承されることが重要なのはなぜですか?より良い例を提供することを検討し、[mcve]の枠を囲んでください。 – GhostCat
編集済み投稿です。それは今はっきりしていますか?私は本当にこの1つで助けていただければ幸いです。 – Arkadeusz91
さて、これで十分です.-) – GhostCat