gpt4 book ai didi

junit - 如何将@RunWith与@RunWith(Parameterized.class)结合起来

转载 作者:行者123 更新时间:2023-12-02 04:14:48 25 4
gpt4 key购买 nike

我实现了一个继承自 BlockJUnit4ClassRunner 的运行器类 A.class,以便我可以使用 @RunWith(A.class) 注释测试。与此同时,sb.否则用 RunWith(Parameterized.class) 注释测试。显然我们不能同时使用两个@RunWith。

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

最佳答案

我相信这符合您的要求:

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 Parameterized 类中的 Javadocs,他们希望您这样创建支持参数化的自定义测试运行器。

更新

更新为自定义运行者命名A

关于junit - 如何将@RunWith与@RunWith(Parameterized.class)结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com