首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将@RunWith与@RunWith(Parameterized.class)组合

如何将@RunWith与@RunWith(Parameterized.class)组合
EN

Stack Overflow用户
提问于 2015-01-02 17:01:19
回答 1查看 8.7K关注 0票数 10

我实现了一个从BlockJUnit4ClassRunner继承的runner类BlockJUnit4ClassRunner,这样我就可以用@RunWith( A.class )对测试进行注释。同时,某人否则用RunWith(Parameterized.class)对测试进行注释。很明显,我们不能同时使用两个@RunWith。

如何解决这个问题?或者如何合并这两个@RunWith?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-03 01:40:21

我相信这能做你想做的:

代码语言:javascript
复制
package so.junit.runner;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.model.InitializationError;
import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters;
import org.junit.runners.parameterized.ParametersRunnerFactory;
import org.junit.runners.parameterized.TestWithParameters;

import java.util.Arrays;

@RunWith(Parameterized.class)
@Parameterized.UseParametersRunnerFactory(CustomParameterizedTest.RunnerFactory.class)
public class CustomParameterizedTest {

  @Parameterized.Parameters
  public static Iterable<Integer> data() {
    return Arrays.asList(new Integer[]{1, 2, 3});
  }

  private int i;

  public CustomParameterizedTest(int i) {
    this.i = i;
  }

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

  public static class RunnerFactory implements ParametersRunnerFactory {
    @Override
    public org.junit.runner.Runner createRunnerForTestWithParameters(TestWithParameters test) throws InitializationError {
      return new A(test);
    }
  }

  public static class A extends BlockJUnit4ClassRunnerWithParameters {
    private final Object[] parameters;

    public A(TestWithParameters test) throws InitializationError {
      super(test);
      parameters = test.getParameters().toArray(new Object[test.getParameters().size()]);
    }

    @Override
    public Object createTest() throws Exception {
      return getTestClass().getOnlyConstructor().newInstance(parameters);
    }
  }
}

基于JUnit参数化类中的Javadocs,他们期望您创建一个支持参数化的自定义测试运行程序。

更新

更新为自定义运行程序A命名

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27745691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档