@BeforeClass 注释:Junit 与 TestNG

2024-03-27

Why the @BeforeClass中的方法JUnit is static而在TestNG its non-static? TestNG是作为改进而开发的JUnit,那么他们为什么选择这种实现方式呢?

Since @BeforeClass只运行一次,所以使它static比使其成为非静态更有意义。同样在 TestNG 中,在该实例中@BeforeClass方法被调用?有人可以举一个例子来更好地理解吗?


JUnit 和 TestNG 之间的主要区别在于测试类实例化。 JUnit 始终为每个测试方法运行创建测试类的新实例。 TestNG只创建一个测试类实例,然后运行该实例的所有测试方法。

JUnit 方法保证了所有测试方法的独立性。它们运行的​​顺序并不重要。此外,对于每个测试方法,所有实例字段始终设置相同。初始化数据对于所有测试方法都是通用的,必须在类级别进行,因此它必须是静态的。这就是 @BeforeClass 方法必须是静态的原因。

TestNG 方法不保证独立性。事实上,您不能以与 JUnit 测试中相同的方式使用实例字段。如果您在一种测试方法中更改此类字段,则在另一种测试方法中仍然可以观察到更改后的值。然而,这种行为也有一个优点:有时某些测试方法之间存在依赖关系。使用 TestNG,测试人员可以表达它们。

由于 TestNG 的单实例方法,@BeforeClass 设置也可以是非静态方法,但它仍然只运行一次。这是一个设计决策,但使用 TestNG 的测试人员必须意识到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@BeforeClass 注释:Junit 与 TestNG 的相关文章

随机推荐