2015-06-08 99 views
0

我有Mappa類的子類MappaFermi和屬性mappaName(從Enum中選擇)。在類和子類中的Java屬性

我想寫一個構造函數MappaFermi()的測試,但我似乎無法正確寫入它。

public class Mappa { 
    private Name mappaName; 
    public Mappa (Name mappaName){ 
     this.mappaName=mappaName; 
     ... 

    } 
} 

public class MappaFermi extends Mappa { 
    public MappaFermi(Name mappaName) { 
     super(mappaName); 
     } 
    } 

public enum Name { 
FERMI, GALILEI, GALVANI 
} 

我已經嘗試了eclipse給出的所有建議,但仍然出現錯誤。

public class MappaFermiTest { 
     @Test 
      public void testMappaFermi() { 
       Mappa mappa = new MappaFermi(Name.FERMI); 
       assertNotNull(mappa); 
      } 

@Test 
      public void testMappaFermi() { 
       Mappa mappa = new MappaFermi(); 
       assertNotNull(mappa); 
      } 
    } 
+0

,什麼是錯誤? – user3707125

+0

只有第一個測試用例應該被編譯 - 但是你也有3個同名的方法,這也表明了一個問題。 – Zelldon

+0

@ user3707125構造函數是undefined – mpz

回答

0

如果你想使用new MappaFermi(),你必須定義一個無參數的構造函數。這是構造函數的默認,並且任何沒有其他構造函數的類都將隱式地具有無參數構造函數。但是,只要你定義了一個帶參數的構造函數,比如Mappa(Name mappaName),no-arg的默認構造函數就不再可用,並且必須被明確定義。

public MappaFermi() { 
    super(null); // or whatever is a good 'default' name 
} 

此外,Mappa mappa = new MappaFermi(whatever);後立即測試assertNotNull(mappa);是很沒有意義的,因爲有沒有辦法它可能是null在這一點上。

0

犯了一些錯誤的位置:

具有相同的名稱testMappaFermi - 三個方法。
測試可以在一種方法中完成,或者如果您真的需要三種方法,您可以重命名這些方法。

- 第二個測試寫得不正確。什麼工作:

Name mappaName = Name.FERMI; 
Mappa mappa = new MappaFermi(mappaName); 

-The第三次測試使用new MappaFermi()沒有被定義一個無參數的構造函數。
要麼你想把一個參數的構造裏,或者寫一個無參數的構造像這樣:

public MappaFermi() { 
    super(Name.FERMI); 
}