我有一个jUnit测试用例来测试助手,实用程序,服务等的Spring托管bean。所以我用SpringJUnit4ClassRunner和contextConfiguration设置了单元测试类。例如 -
@ContextConfiguration({ "classpath:context-file.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class UnitTests {
@Test
public void test1() {
//...
}
@Test
public void test2() {
//...
}
@Test
public void test3() {
//...
}
@Test
public void test4() {
//...
}
}
我想在运行时在某些条件下运行这四个(或更多)单元测试,例如 如果互联网可用然后运行测试UnitTests.test1(),如果数据库已连接然后运行UnitTests.test2(),如果存在图像文件目录然后运行测试UnitTests.test3(),如果远程服务器正确响应然后运行测试UnitTests.test4()。
虽然我已经通过了jUnit org.junit.Assume 但它并不合适,但它可以使测试框架能够运行所有测试或跳过所有测试。 @Ignore 也不适用于这些情况。还经历了 junit-ext (https://code.google.com/p/junit-ext/),但其依赖关系在maven-central存储库(junit-ext-maven-dependency)上不可用。请有人帮我解决一些代码的问题。
答案 0 :(得分:2)
根据文档,它看起来与您的需求完全相同:
@Test
public void filenameIncludesUsername() {
assumeThat(File.separatorChar, is('/')); //Check here the condition
assertThat(new User("optimus").configFileName(), is("configfiles/optimus.cfg"));
}
@Test public void correctBehaviorWhenFilenameIsNull() {
assumeTrue(bugFixed("13356")); // bugFixed is not included in JUnit
assertThat(parse(null), is(new NullDocument()));
}
如果assumeThat()失败,它将忽略测试用例。如果你在@Before或@BeforeClass中做一个假设,而不是全班。
摘自文档:
@Before或@BeforeClass方法中的失败假设将具有 与班级的每个@Test方法中的失败假设相同。