我明白,,
在每个测试之前,或者在整个测试类之前分别运行
@Law
和@ClassLaw
分别包装每个测试或整个测试类。
假设我需要在每个测试方法之前初始化一些数据,
我如何在使用
@之前
和@规则
之间做出决定?在什么条件下,一个优先于另一个?同样的问题也适用于@BeforeClass
和@ClassRule
。
事实上,正如@Quwin所建议的,根据JUnit 4.12 API文档,
TestRule
可以完成以前使用@Before
、@After
、@BeforeClass
、或@AfterClass
注释的方法可以完成的所有事情,但是TestRule
具有(1)更强大的功能,以及(2)更容易在项目和类之间共享。
测试规则更强大的方式:
TestRule
有一些已知的实现类,这些类是一些有用的规则,您可以开箱即用,
有关如何使用的示例,请参阅提供的这些测试规则,或编写自己的测试规则:
ErrorCollector
:在一种测试方法中收集多个错误规则的另一个好处是可以在一个测试用例中使用多个规则。您可能希望使用RuleChain
来指定运行规则的顺序。
为了使用@Rule
,您需要一个实现TestRule
(首选)或MethodRule
的类,如下所示。而@Before
和@Before
需要在每个测试用例中编写新方法,@Rule
则不需要,因为它只是现有代码的实例化。
因此,如果您将在许多测试用例中使用之前和
之后的
用于
setUp()
和tearDown()
,那么实际上使用@规则是一个更好的主意,因为
之前和/或之后有一个唯一的代码重用
。如果您有一个测试用例,它要求在,那么这些注释是首选的。
要获得更详细的答案和几个例子,请看这里。阿吉特解释得很好。
主要内容:1. 注释支持,2. 异常测试,3. 忽略测试,4. 时间测试,5. 套件测试,6. 参数化测试,7.依赖性测试,结论JUnit 4和TestNG都是Java中非常受欢迎的单元测试框架。两种框架在功能上看起来非常相似。 哪一个更好? 在Java项目中应该使用哪个单元测试框架? 下面表中概括了JUnit 4和TestNG之间的功能比较。如下图所示 - 1. 注释支持 注释/注解支持在JUnit 4和TestNG中是非常类似的。 特点 JUnit 4 TestNG 测试注释 @Test @
在JUnit 4.10及更低版本中,可以将规则注释为@规则和@ClassRur。这意味着规则会在类之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRur调用),然后廉价地重置它(通过@Rur调用)。 从JUnit 4.11开始,@规则字段必须是非静态的,@ClassRule字段必须是静态的,因此上述操作不再可行。 有明确的变通方法(例如,明确地
我需要模拟一个类的静态方法,并在测试中使用该模拟方法。现在看来我只能用PowerMock来实现。 我用@RunWith(PowerMockRunner.class)注释类,并用适当的类注释@PrepareForTest。 在我的测试中,我有一个@ClassRule,但在运行测试时,该规则没有正确应用。 我能做什么?
我面临一个问题,我无法将一些json转换为java对象。这个问题在这里:Spring Jackson反序列化通用对象列表。现在,我能够通过从Spring 3.0.3升级到Spring 3.2来解决这个问题。 我现在面临的问题如下。我的序列化/反序列化在我的webapp上工作得很好,但在我的单元测试上却不行。当我运行/调试它们时,我发现我遇到了与之前相同的问题(另一个stackoverflow帖子上
根据4.12发行说明,可以使用@Rule和@ClassRule对测试类的静态成员进行注释: 同时使用@Rule和@ClassRule注释的静态成员现在被认为是有效的。这意味着可以使用单个规则在类之前/之后(例如设置/拆除外部资源)和测试之间(例如重置外部资源)执行操作, 我想使用此功能在文件中所有测试开始时初始化资源,在每个测试之间对资源进行一些清理,并在所有测试完成后将其丢弃。此资源当前由扩展E
问题内容: 据我了解,并在指定目标之前或之后插入内容。我不太确定这个CSS片段的目的是什么? 问题答案: 这会将边框大小调整应用于所有元素以及它们可能生成的任何和伪元素。该部分表示 任何 元素的相应伪元素。 稍后在样式表中创建特定的/ 规则后,此声明将自动应用于所有这些伪元素,因此您不必在每个伪元素规则中都重复该声明。换句话说,级联对伪元素的工作方式与对实际元素完全相同:当您具有匹配同一事物的单独