重复JUnit测试以不同的设置运行

时间:2018-03-25 22:17:36

标签: java junit

例如,我有一些基于Set<Integer>的测试。我希望使用TreeSet然后使用HashSet运行它们。我可以在没有手动初始化测试方法体内的情况下完成吗

这样的事情:

public class SomeTest {
    Set<Integer> set;

    @Before 
    public void init() {
        set = new HashSet<>();
    }

//    @Before
//    public void init2() {
//        set = new TreeSet<>();
//    }

    //test...
}

我想首先使用init()然后使用init2()运行所有测试。我该怎么办?

1 个答案:

答案 0 :(得分:2)

更清洁的方法是:

public abstract class SomeTestsForSets {
  Set<Integer> set;

  @Before 
  public abstract void init();

  //test cases...
}

public class HashSetTests extends SomeTestsForSets {

  @Override
  public void init() {
    this.set = new HashSet<>();
  }
}

public class TreeSetTests extends SomeTestsForSets {

  @Override
  public void init() {
    this.set = new TreeSet<>();
  }
}