2013-08-05 44 views
0

我想做一個測試跑步者第一類是測試跑步者,第二個是類testet和最後一個是我的主頁..我想達到與方法調用測試器方法,但這是行不通的。如何解決在Java中反射代碼?

public class tester { 

     public tester() 
     { 

     } 

     @Test 
     public void testTopla(){ 
      int sayi1 = 10; 
      int sayi2 = 20; 
      int gercekSonuc = 30; 
      // 
      islem isl = new islem(sayi1, sayi2); 
      int sonuc = isl.topla(); 
      Assert.assertTrue("Sonucta Hata Var", sonuc == gercekSonuc); 
     } 

    and this is what i am testing 
    public class islem { 
     private int sayi1; 
     private int sayi2; 

     public islem(){ 

     } 
     public islem(int sayi1, int sayi2){ 
      this.sayi1 = sayi1; 
      this.sayi2 = sayi2; 
     } 

     public int getSayi1() { 
      return sayi1; 
     } 

     public void setSayi1(int sayi1) { 
      this.sayi1 = sayi1; 
     } 

     public int getSayi2() { 
      return sayi2; 
     } 

     public void setSayi2(int sayi2) { 
      this.sayi2 = sayi2; 
     } 
     public int topla(){ 
      return this.sayi1 + this.sayi2; 
     } 


    and this 
public class Deneme1UI extends UI { 

    @WebServlet(value = "/*", asyncSupported = true) 
    @VaadinServletConfiguration(productionMode = false, ui = Deneme1UI.class) 
    public static class Servlet extends VaadinServlet { 
    } 

    @Override 
    protected void init(VaadinRequest request) { 
     final VerticalLayout layout = new VerticalLayout(); 

     layout.setMargin(true); 
     setContent(layout); 

    Class hilmi = tester.class; 

     tester obj = new tester(); 


     for(Method method : hilmi.getDeclaredMethods()) 
     { 
      method.invoke(obj); 

    } 

回答

1

看看這個: http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html#invoke%28java.lang.Object,%20java.lang.Object...%29

的調用的第一個參數()函數需要是反映 類的實例,你的情況的類的實例tester

你將不得不創建一個tester類的實例,然後才能調用其方法

+0

謝謝,我試過這個Object obj = hilmi.newInstance(); method.invoke(OBJ);但沒有工作 – user2652256

+0

你會得到什麼例外?因爲它應該工作。除非它沒有沒有參數的構造函數 – x4rf41

+0

未處理的異常類型illegalaccessexception – user2652256