防止执行JUnit测试或强制执行JUnit的特殊执行顺序



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

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

但在服务器上,每个JUnit测试也将自己运行,所以EncryptorTest和DecryptorTest可能会混淆。我该如何防止这种情况发生?

JUnit不支持测试排序,您可能需要使用TestNG(这是相关文档)。

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

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

最新更新