gpt4 book ai didi

java - Junit @AfterClass(非静态)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:24:08 30 4
gpt4 key购买 nike

Junit 的@BeforeClass@AfterClass 必须声明为static。有一个很好的解决方法 here对于 @BeforeClass。我类有很多单元测试,只想初始化和清理一次。关于如何获得 @AfterClass 的解决方法的任何帮助?我想在不引入额外依赖项的情况下使用 Junit。谢谢!

最佳答案

如果您想要类似于 @BeforeClass 中提到的解决方法,您可以跟踪已运行了多少测试,然后一旦所有测试都已运行,最终执行您的结束清理代码。

public class MyTestClass {
// ...
private static int totalTests;
private int testsRan;
// ...

@BeforeClass
public static void beforeClass() {
totalTests = 0;
Method[] methods = MyTestClass.class.getMethods();
for (Method method : methods) {
if (method.getAnnotation(Test.class) != null) {
totalTests++;
}
}
}

// test cases...

@After
public void after() {
testsRan++;
if (testsRan == totalTests) {
// One time clean up code here...
}
}
}

假设您使用的是 JUnit 4。如果您需要考虑从父类(super class)继承的方法,请参阅 this因为这个解决方案没有继承方法。

关于java - Junit @AfterClass(非静态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083647/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com