java - 使用不同的数据运行 JUnit 测试

标签 java testing junit

我有一套单元测试。我有一个在 setup() 方法中初始化的静态变量。我想使用该静态变量的两个不同值来运行我的所有单元测试套件。

setup() 中的静态变量被初始化为一个单例对象。所以,我不能(我想我不能)使用 JUnit 参数化测试。

我必须用该静态变量的一个值运行所有测试,然后用静态变量的另一个值运行所有测试。

如果可能的话,关于如何以优雅的方式做到这一点的任何想法。

如果我上面的描述不是很容易理解,请看下面的代码

public class MyClassTest{
      private static final Dep_class dep_obj;

      public static void setup(){
               dep_obj = Dep_class.getInstance("VALUE_1");
               //You can have only instance of Dep_class at any time.
               //So for second run I need to do a 
               //dep_obj = Dep_class.getInstance("VALUE_2") and run my tests.
      }

      public void test_mymethod(){
          //do something with dep_obj
      }

最佳答案

试试这个

@RunWith(Parameterized.class)
public class MyClassTest {
    private Object dep_obj;

    public MyClassTest(String val) {
        dep_obj = val;
    }

    @Parameters
    public static Collection<?> data() {
        Object[][] data = { { "val1" }, { "val2" }, { "val3" } };
        return Arrays.asList(data);
    }

    @Test
    public void test() {
        System.out.println(dep_obj);
    }
}

关于java - 使用不同的数据运行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577559/

相关文章:

java - 如果@ApplicationScope,CDI( Weld 3.0.3.Final)不会调用@PostConstruct

sql - 如何在go lang中测试事务回滚和提交

java - 使用 Spring 的 DomainClassConverter 功能进行单元测试

gradle - 如何为 JUnit 5 测试创建 HTML 报告?

ruby-on-rails - 使用 params.merge 将对象的参数传递给 Rspec 测试

java - Junit Automation 测试中的某些测试需要许多不同的输入

java - 如何从Android中的第三方库中删除多余的包?

java - eclipse |马文 : Multiple annotations found at this line

java - Activity销毁时如何调用overridePendingTransition()?

testing - 如何使用马拉松测试工具(MarathonITE)从命令行运行少量测试用例或测试套件?