我们目前有一个集成测试基类
@SpringApplicationConfiguration(classes = { MyApp.class, TestConfig.class })
@IntegrationTest({
"foo:bar",
"baz:qux"
})
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public abstract class BaseIntegrationTest {
...
}
我们要做的是为单个测试类添加一个参数@IntegrationTest
。
有解决方法吗?例如,为单个测试类启动一个新应用程序?
基本上,我想做的是:
public class TestOne extends BaseIntegrationTest { ... }
@IntegrationTest({
"foo:zorblax"
})
public class TestTwo extends BaseIntegrationTest { ... }
答案 0 :(得分:3)
似乎如果你分开基类,应用程序是单独配置的。
我最终做了什么:
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public abstract class BaseIntegrationTest {
// Common methods and fields,
// @Before, @PostConstruct, etc.
}
@SpringApplicationConfiguration( classes = {...} )
@IntegrationTest({
"foo:bar",
"bar:baz"
})
public abstract class WithParamsOne extends BaseIntegrationTest {
// empty
}
@SpringApplicationConfiguration( classes = { /* Different */ } )
@IntegrationTest({
"foo:zorblax"
})
public abstract class WithParamsTwo extends BaseIntegrationTest {
// empty
}
public class ActualTest extends WithParamsOne {
// @Test
}
public class SecondActualTest extends WithParamsTwo {
// @Test
}
答案 1 :(得分:0)
您可以使用配置文件设置其他属性。可以使用注释@ActiveProfiles
激活它们。您还可以在一次测试中组合配置文件。
根据之前的回答,您可以创建个人资料" param_one"和" param_two"。可以通过特定于配置文件的属性文件设置属性:application-param_one.properties和application-param_two.properties
@SpringApplicationConfiguration(...)
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public abstract class BaseIntegrationTest {
}
@ActiveProfiles("param_one")
public class FirstParamTest extends BaseIntegrationTest {
}
@ActiveProfiles("param_two")
public class SecondParamTest extends BaseIntegrationTest {
}
@ActiveProfiles({ "param_one", "param_two" })
public class AllParamsTest extends BaseIntegrationTest {
}
另请参阅Reference Guide。