Junit/TestNg google 出品:Junit4 的 TestParameterInjector

恒温 · 2021年07月06日 · 最后由 昨天有雨 回复于 2021年07月06日 · 3463 次阅读

最近在网上闲逛,发现谷歌给 Junit4 搞了一个有意思的 runner。

TestParameterInjector is a JUnit4 test runner that runs its test methods for different combinations of field/parameter values.

先看下怎么用的?

案例代码


import com.google.testing.junit.testparameterinjector.TestParameterInjector;
import com.google.testing.junit.testparameterinjector.TestParameter;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(TestParameterInjector.class)
public class Junit4Test {

    @TestParameter({"1", "2", "3"}) int i;

    @Test
    public void test1(@TestParameter boolean enableFlag) {
        System.out.println("----" + enableFlag);
    }

    @Test public void test2(@TestParameter MyEnum myEnum) {
        // ...
        System.out.println("----" + myEnum);
    }

    enum MyEnum { VALUE_A, VALUE_B, VALUE_C }
}

pom.xml


<dependency>
  <groupId>com.google.testparameterinjector</groupId>
  <artifactId>test-parameter-injector</artifactId>
  <version>1.4</version>
</dependency>

跑起来的样子

有啥用呢?

最大的用户就是省去了你重复写代码的工作。想想如果没有这个 TestParameterInjector, 你要测试这么多组合,得写多少代码?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

可以用在 fuzzing 和混沌测试中?

槽神 回复

嗯,可以的

恒温 回复

我厂研发测 pytorch、tensorflow 这些框架好像也用的是类似的手段,很多算子组合,一次测试跑几个小时,结果出几十万条

这个是通过动态代理实现的吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册