【发布时间】:2015-01-01 09:21:32
【问题描述】:
作为一个重度TestNG用户,这不是问题,因为@{Before,After}Class方法不是static...
但在 JUnit 中,它们是。
这对我目前正在做的事情来说是一个相当大的问题。
我正在为 assertj 编写 java.nio.file.Path 的断言,它使用 JUnit 4.x 进行测试。有些断言要求我初始化一个FileSystem(准确地说是memoryfs)来测试它们;理想情况下,这样的文件系统应该在测试类级别而不是每个测试中初始化。并且根据测试类,我需要以不同的方式初始化该文件系统的内容。
不过,我现在使用@Before/@After,因为我不知道更好...
同样,使用 TestNG,没有问题,因为 @{Before,After}Class 不是静态的。那么,您如何使用 JUnit 做到这一点?
.
【问题讨论】:
-
类似问题已经结束 here 并且接受的答案似乎建议使用 testng 或带有@RunWith(MyClass.class) 的hack :(
-
@almasshaikh 嗯,所以你也是 TestNG 用户 ;) 无论如何,在这里我别无选择......我看到一个答案建议一个构造函数,我可能会去。我只是想知道是否会有内置机制。当你使用 TestNG 时,使用 JUnit 真的 感觉就像是倒退了一步:/
-
反对者请解释
-
@fge 这个问题还很不清楚,似乎过早地得出结论(模板方法方法)。与往常一样,一个具体的代码示例(例如,您将如何在 TestNG 中编写此测试)会有所帮助。
-
阅读问题的标题和(大部分)正文。这完全是关于您想到的解决方案的实现细节(“@BeforeClass/@AfterClass 抽象方法”、“方法不是静态的”等),而不是解释真正的问题。此外,您没有解释为什么最直接的解决方案(在每个测试类中都有一个
@BeforeClass,没有公共基类)在您的情况下还不够好。 (你甚至没有提到有一个基类;这必须从上下文中推断出来。)当然,读者可以对所有这些事情做出有根据的猜测,但他们不应该这样做。