2014-11-14 40 views
0

我有與相關數據如何從一個測試套件亞軍類

public abstract class AbstractTestClass extends TestCase 
{ 

    public ArrayList<TestDetails> testList; 
} 

擴展了JUnit的TestCase的抽象類訪問一個測試用例類變量,然後我有一個擴展抽象類的測試類

public class TestClass extends AbstractTestClass 

這被包括在一個測試套件

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    TestClass.class 
}) 


public class TestSuite { 


} 

我然後運行測試スITE從主功能的亞軍類

public class TestRunner { 

    public static void main(String[] args) { 

     JUnitCore.runClasses(TestSuite.class); 

    } 
} 

我的問題是如何從亞軍類,即在訪問testList數據,如果我想在清單上打印出每個元素的細節從主。該數據是動態創建的(在試驗進行的同時)

回答

0

一條出路可能是申報的ArrayList Testlist靜態和做出的TestRunner類擴展AbstractTestCase類:

所以,現在你AbstractTestCase類看起來如下:

import java.util.ArrayList; 

import junit.framework.TestCase; 

public abstract class AbstractTestClass extends TestCase 
{ 

    public static ArrayList<TestDetails> testList; 
} 

和你的TestRunner類是什麼樣子:

import org.junit.runner.JUnitCore; 

public class TestRunner extends AbstractTestClass{ 

    public static void main(String[] args) { 

     JUnitCore.runClasses(TestSuite.class); 
     System.out.println(testList); 
    } 
} 

現在你可以從TestRunn訪問testList呃。它可能不是最優雅的解決方案,但它的工作原理。

+0

嗨,謝謝你的回覆。我確實想到了這一點,但不幸的是我有很多AbstractTestClass的實例,因此使列表靜態不起作用。還有什麼你能想到的嗎? – doblo7 2014-11-18 09:14:40

+0

我不認爲你可以獲得TestList數據的訪問權限,除非TestRunner類可以通過Inheritance訪問它,否則其他解決方法將不存在,因爲它會違反OOPS繼承的概念,唯一的解決方法是Multiple繼承是接口,所以你需要使用接口而不是抽象類,並使TestCase類至少實現getter方法,但是這不是一個好的解決方法,強烈建議將所有測試數據保存在一個地方而不是分佈式。 – Anirudh 2014-11-18 10:12:02

+0

如果你仍然希望這樣做,你可以將所有的抽象類保存在一個地方或包中,你可以使用TestRunner類的靜態導入,並將testList保持爲靜態 – Anirudh 2014-11-18 10:32:42