【问题标题】:How to access variables in a test case class from a test suite runner class如何从测试套件运行器类访问测试用例类中的变量
【发布时间】:2015-01-11 22:41:43
【问题描述】:

我有一个抽象类,它用相关数据扩展了 JUnit TestCase

public abstract class AbstractTestClass extends TestCase
{

    public ArrayList<TestDetails> testList;
}

然后我有一个扩展抽象类的测试类

public class TestClass extends AbstractTestClass

这包含在测试套件中

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


public class TestSuite {


}

然后我从一个带有 main 函数的运行器类运行测试套件

public class TestRunner {

    public static void main(String[] args) {

        JUnitCore.runClasses(TestSuite.class);

    }
}

我的问题是如何从 runner 类中访问 testList 数据,即,如果我想从 main.xml 打印出列表中每个元素的详细信息。数据是动态创建的(在运行测试期间)

【问题讨论】:

    标签: java testing junit testcase test-suite


    【解决方案1】:

    一种方法可能是将 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);
        }
    }
    

    现在您可以从 TestRunner 访问 testList。它可能不是最优雅的解决方案,但它确实有效。

    【讨论】:

    • 您好,感谢您的回复。我确实想到了这一点,但不幸的是,我有很多 AbstractTestClass 实例,因此使列表静态化是行不通的。还有什么你能想到的吗?
    • 我认为您无法访问 TestList 数据,除非 TestRunner 类以某种方式可以通过继承访问它,其他解决方法将不存在,因为它会违反 OOPS 的继承概念,多重继承的唯一解决方法是接口,因此您需要使用接口而不是抽象类,并使 TestCase 类至少实现它们的 getter 方法,但这又不是一个好的解决方法,强烈建议保留所有测试数据在一个地方而不是分发。
    • 如果您仍然希望这样做,您可以将所有抽象类保存在一个地方或包中,您可以对 TestRunner 类使用静态导入并将 testList 保持为静态
    • 谢谢 Anirudh,我想我要将 testList 中的数据从 AbstractTestClass 中写入一个文件,然后提取它,您认为这是更好的做法吗?
    • 这个测试数据是你测试用例的输入数据吗?如果是这样,您可以将它们保存在 excel 文件中并使用 POI API 进行提取...如果数据是在执行测试用例期间构建的,那么这是处理过的数据,而不是完全测试数据。
    猜你喜欢
    • 2020-05-14
    • 2017-11-09
    • 2015-11-27
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多