2017-05-29 35 views
0

嗨當​​我運行下面的testNG文件作爲獨立腳本如果執行按預期。如何從另一個類運行TestNG類

public class TESTTNGClass { 
    WebDriver driver; 
    @Test 
    public void f() { 
     System.out.println("In Test"); 
    } 
    @BeforeMethod 
    public void beforeMethod() { 

     System.out.println("Before Test"); 
    } 

    @AfterMethod 
    public void afterMethod() { 
     System.out.println("After Test"); 
    } 

} 

O/P:

Before Test 
In Test 
After Test 

但爲什麼從另一個類調用時同樣不行。從另一個班級觸發時,請幫助實現同樣的目標。以下是類調用測試類

public class TESTClass { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     TESTTNGClass t = new TESTTNGClass(); 
     t.f(); 
    } 

} 

O/P:

In Test 
+0

你有什麼用例運行從另一個類的類?你有沒有testNG這樣執行? –

回答

2

這裏是回答你的問題:

在理解和試驗過程與Java & TestNG你已經減少了Annotation的功率TestNG

  • 當您正在執行TESTTNGClass.java作爲TestNG Test時,所有工作都很好。沒有問題。
  • 當你執行TESTClass.java作爲Java Application,爪哇要在其中創建ClassTESTTNGClass的對象,然後你調用方法f()只能理解main()。由於Java編譯器都沒有的BeforeMethod想法,Test & AfterMethod批註的TestNG,它只是執行f()方法,版畫In Test結束執行。

關於如何做到這一點:

  • 通過一些其他的名字foo()更換main()
  • f()從「TESTTNGClass」類帶入「TESTClass」類。
  • 當您編寫「TESTClass」類擴展「TESTTNGClass」類時。
  • 執行「TESTClass。java的」爲TestNG Test

你的應用程序是這樣的:

  • TESTTNGClass類:

    package Q44240531_TestNG_Main; 
    
    import org.testng.annotations.AfterMethod; 
    import org.testng.annotations.BeforeMethod; 
    
    public class TESTTNGClass 
    { 
    
    
        @BeforeMethod 
        public void beforeMethod() { 
    
         System.out.println("Before Test"); 
        } 
    
        @AfterMethod 
        public void afterMethod() { 
        System.out.println("After Test"); 
        } 
    } 
    
  • 的TestClass類:

    package Q44240531_TestNG_Main; 
    
    import org.testng.annotations.Test; 
    
    public class TESTClass extends TESTTNGClass { 
    
          @Test 
          public void f() 
          { 
           System.out.println("In Test"); 
          } 
    } 
    

讓我知道這個答案是否是您的問題。

+0

它肯定會回答我的問題之一,但是如何從另一個班級調用時獲得相同的輸出?我應該分別調用這3種方法嗎? – Programmer

+0

@Programmer太棒了!用其他名字'foo()'替換'main()'。將「TESTTNGClass」類中的'f()'引入「TESTClass」類。當你寫「TESTClass」類擴展「TESTTNGClass」類。執行「TESTClass」類。你能接受答案,如果它回答你的問題?謝謝 – DebanjanB

+0

如果只有一個「TESTTNGClass」,如果只有其他幾個類如「TESTTNGClass1」,「TESTTNGClass2」等等,那麼該場景將是有效的。 – Programmer

0

公共類識別TestClass擴展TESTTNGClass {

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    TESTTNGClass t = new TESTTNGClass(); 
    try{ 
     t.f(); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

}

+0

這個問題已經有了*正確的答案。你的答案是競爭性的多餘的,除了它的質量低。 –