当前位置: 首页 > 面试题库 >

在所有junit测试之后进行清理

冯和硕
2023-03-14
问题内容

在我的项目中,我必须在所有测试之前进行一些存储库设置。这是使用一些棘手的静态规则完成的。但是,在所有测试之后,我不知道如何进行清理。我不想保留一些不可思议的静态数字来引用所有测试方法的编号,我应该一直保持这种状态。

最受赞赏的方法是添加一些将在所有测试后调用的侦听器。JUnit4中已经有用于它的任何接口吗?

编辑:这与@BeforeClass和@AfterClass无关,因为我必须知道是否使用@AfterClass注释的方法是最后一次调用。


问题答案:

我正在使用JUnit 4.9。这会帮助吗?:

import junit.framework.TestCase;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({First.class,Second.class,Third.class})
public class RunTestSuite extends TestCase {
    @BeforeClass
    public static void doYourOneTimeSetup() {
        ...
    }

    @AfterClass
    public static void doYourOneTimeTeardown() {
        ...
    }    
}

编辑:我非常肯定(除非我误解了您的问题),我的解决方案是您要寻找的。也就是说,在完成所有测试后,使用一种拆卸方法。不需要侦听器,JUnit具有此功能。谢谢。



 类似资料:
  • 方法和测试位于一个类中,例如 下面是我的testng.xml的示例,其中包含了包含功能测试的包 UPD.post修改后的代码中包含AfterTest。我只使用before/aftermethod注释

  • 我在这里看到了:在Maven/Surefire中,什么是清理单元测试后的好方法,无论测试是否通过?但这帮不了我。我可能错误地配置了failsafe和/或surefire。 我已经将jUnit声明为依赖项 我在构建中有故障安全插件: 我没有任何遵循*IT命名约定的集成测试,只有遵循*Test命名约定的jUnit测试。我只是试图使用故障安全作为一种方法来确保我的清理完成。我试过船长是真的,我试过评论这

  • 我几乎只在我不想作为测试套件的一部分运行的非单元测试中使用JUnit类别。在NUnit中,我可以使用显式,但我在JUnit中发现的唯一可比的是类别。在gradle中,排除类别很简单,但我不知道如何使用IntelliJ的测试运行程序来做到这一点。我知道如何运行属于类别的测试,但不知道如何排除它们。

  • 我一直在设置一些合约JUnit 4测试(遵循回答这个问题的建议) - 例如,如果我有一个接口(我已经在示例中包含了泛型,因为我在我的项目中使用它们) - 但是,这是一个大大简化的示例: 我可以创建一个抽象的合同测试,例如: ...并为每个实现扩展此抽象测试类(我使用。我还将一些变量传递给抽象测试类,以测试接口的实现。 然而,实际上,一些接口返回的对象是其他接口的实现,我希望能够使用该接口的抽象契约

  • 我想在JUnit中创建用于测试运行的自定义html报告。我有一个问题是释放资源和关闭标记后,所有的测试都完成了。 我保留了一个打开的文件,以便编写报告。因为每个测试都应该是表和行,而且有数百个,所以我不想为每个测试打开和关闭通道。这里出现的问题是测试组织--我有嵌套的套件,所以testRunFinished不是一个选项(指单个套件,不是所有测试,我看到了这个问题)。TestWatcher也不会帮助

  • 我有一个Java应用程序,它使用Gradle作为构建系统。这是多项目构建(几个Java项目)。 当我运行时,有些测试失败了,我注意到并不是所有的测试都在运行。 如果我将以下代码添加到中,它确实会运行所有测试,但当然,构建的代码总是成功完成: 我有两个问题: gradle是否在第一次失败后停止执行测试? 是否有一种方法可以运行所有测试(即使在一些测试失败时),并且如果其中一些测试失败,构建的测试仍然