在进行测试之前,是否有可能要求junit运行一个处方?

时间:2016-12-13 18:59:26

标签: java spring unit-testing junit spring-boot

在进行测试之前,是否有可能要求junit运行一个脚本?

我不想运行@Before,因为它只会初始化一个测试。 我认为setUp也没有做同样的事情。

有ClassRule,但它需要维护一个Test列表。

一个好处是有一个入口测试文件,所以我可以从这里运行我的java代码。

使用示例:

  • “整个测试需要启动数据库。”
  • “需要运行迁移脚本”

我知道人们会告诉我在gradle之前或另一个构建工具中运行它。

我正在使用flyway进行数据库迁移,版本号存储在我的spring boot yaml文件中。我选择使用java而不是gradle配置flyway,因为gradle需要使用命令行进行迁移,因此无法使用jenkins运行。

另外,我不知道如何在gradle中读取yaml的值,也不知道如何运行脚本。

1 个答案:

答案 0 :(得分:2)

您需要使用@BeforeClass注释。

它表示附加的静态方法必须在类中执行一次之前 。当测试方法共享计算成本高昂的设置时(例如,连接到数据库,连接池),就会发生这种情况。

例如,Hibernate SessionFactory初始化的昂贵操作:

private static SessionFactory sessionFactory;

@BeforeClass
public static void beforeClass() {
    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}