我有2种测试方法,我需要使用不同的配置运行它们
myTest() {
.....
.....
}
@Test
myTest_c1() {
setConf1();
myTest();
}
@Test
myTest_c2() {
setConf2();
myTest();
}
//------------------
nextTest() {
.....
.....
}
@Test
nextTest_c1() {
setConf1();
nextTest();
}
@Test
nextTest_c2() {
setConf2();
nextTest();
}
我无法从一个配置中运行它们(如下面的代码所示),因为我需要单独的方法来执行tosca。
@Test
tests_c1() {
setConf1();
myTest()
nextTest();
}
我不想编写这两种方法来运行每个测试,我该如何解决?
首先我想写自定义注释
@Test
@RunWithBothConf
myTest() {
....
}
但也许还有其他解决方案吗?
答案 0 :(得分:3)
如何使用Theories
?
@RunWith(Theories.class)
public class MyTest{
private static enum Configs{
C1, C2, C3;
}
@DataPoints
public static Configs[] configValues = Configs.values();
private void doConfig(Configs config){
swich(config){...}
}
@Theory
public void test1(Config config){
doConfig(config);
// rest of test
}
@Theory
public void test2(Config config){
doConfig(config);
// rest of test
}
不确定为什么要关闭格式化。
答案 1 :(得分:1)
以下是我将如何处理它:
在下面的示例中,我有一个成员变量conf
。如果没有运行任何配置,它将保持默认值0. setConf1现在是setConf
类中的Conf1Test
,它将此变量设置为1. setConf
中的Conf2Test
现在为public class Conf1Test
{
protected int conf = 0;
@Before
public void setConf()
{
conf = 1;
}
@Test
public void myTest()
{
System.out.println("starting myTest; conf=" + conf);
}
@Test
public void nextTest()
{
System.out.println("starting nextTest; conf=" + conf);
}
}
} class。
这是主要的测试类:
public class Conf2Test extends Conf1Test
{
// override setConf to do "setConf2" function
public void setConf()
{
conf = 2;
}
}
第二个测试类
starting myTest; conf=1
starting nextTest; conf=1
starting myTest; conf=2
starting nextTest; conf=2
当我配置IDE以运行包中的所有测试时,我得到以下输出:
conf1
我认为这会给你带来什么。每个测试只需编写一次。每个测试都会运行两次,一次使用conf2
,一次使用{{1}}
答案 2 :(得分:1)
我在一堆测试用例中遇到了类似的问题,其中某些测试需要使用不同的配置运行。现在,你的情况下的'配置'可能更像设置,在这种情况下,这可能不是最好的选择,但对我来说它更像是一个部署模型,所以它适合。
答案 3 :(得分:0)
你现在拥有它的方式对我来说似乎很好。您没有复制任何代码,每个测试都清晰易懂。