是否阻止执行JUnit测试或强制执行JUnit测试的特殊执行顺序?

时间:2012-01-27 14:43:11

标签: unit-testing junit test-suite

通常每个JUnit测试都应该封装,但是我需要测试EncryptorTest存储的加密文件是否可以被DecryptorTest中的另一个Java VM实例解密。您可以通过运行2个不同的JUnit测试类(而不是JUnit测试本身!)来管理它。唯一的问题是我必须保证EncryptorTest在DecryptorTest之前运行(因为第一个使用加密的字符串保存文件)。我怎样才能做到这一点?我想过使用TestSuite:

@RunWith(Suite.class)
@SuiteClasses({EncryptorTest.class, DecryptorTest.class})
public class EncrypterDecrypterTestSuite
{
}

但是在服务器上,每个JUnit测试都会自行运行,因此EncryptorTest和DecryptorTest会混淆。我该如何防止这种情况?

3 个答案:

答案 0 :(得分:2)

JUnit不支持测试的排序,你可能想要使用TestNG(here is the relevant doc)。

答案 1 :(得分:1)

通常,JUnit用于单元测试,因此测试用例之间不应存在依赖关系。您可以使用@Before注释在解密之前设置加密,或者更好的是,从文件系统加载加密文件或以编程方式提供加密文件。

答案 2 :(得分:0)

我现在以不同的方式解决了这个问题。我省略了EncrypterTest,只是自己加密文件中的文本,让DecrypterTest一直读取这个文件。所以我不必关心在不同的VM中运行它。