Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为多个JUnit测试类添加设置步骤_Java_Unit Testing_Junit_Junit4_Junit Runner - Fatal编程技术网

Java 为多个JUnit测试类添加设置步骤

Java 为多个JUnit测试类添加设置步骤,java,unit-testing,junit,junit4,junit-runner,Java,Unit Testing,Junit,Junit4,Junit Runner,在一个项目中有多个测试类,每个测试类包含多个测试方法。比如说,我想在运行这些测试类之前创建一个数据库连接。无论我是运行单个测试类、多个测试类还是一个测试套件,都应该建立连接。 最重要的是,在多个测试类的情况下,不应反复调用此步骤。不管我运行的测试类有多少,连接只应该建立一次 您能推荐一种设计或任何JUnit技巧来解决这个问题吗?使用JUnit注释 编写测试时,通常会发现需要几个测试 在运行之前创建的类似对象。注释公共空白 带有@Before的方法导致在测试之前运行该方法 方法。超类的@Befor

在一个项目中有多个测试类,每个测试类包含多个测试方法。比如说,我想在运行这些测试类之前创建一个数据库连接。无论我是运行单个测试类、多个测试类还是一个测试套件,都应该建立连接。 最重要的是,在多个测试类的情况下,不应反复调用此步骤。不管我运行的测试类有多少,连接只应该建立一次

您能推荐一种设计或任何JUnit技巧来解决这个问题吗?

使用JUnit注释

编写测试时,通常会发现需要几个测试 在运行之前创建的类似对象。注释公共空白 带有@Before的方法导致在测试之前运行该方法 方法。超类的@Before方法将在这些方法之前运行 当前类的


只需为所有junit类引入一个超类。您可以将数据库连接逻辑放在超类@Before注释方法中

您可以在测试套件中运行这些类。请参阅和提供的答案

或者在每个测试类之前更改设计并使用注释运行安装程序一次

有时,一些测试需要共享计算上昂贵的设置 (就像登录数据库一样)。而这可能会损害 测试的独立性,有时是必要的优化。 用@BeforeClass注释公共静态void no arg方法 它必须在类中的任何测试方法之前运行一次。这个 @超类的BeforeClass方法将在这些方法之前运行 现在的班级


如果您使用的是spring测试,那么您可以使用这里使用的技术:

我不确定这是否回答了我问题的最后一部分。如果我的测试套件有多个测试类,则带有@Before注释的超类方法将运行多次。@BeforeClass听起来像是一个解决方案。但我在SuperTestClass中使用了一个静态初始值设定项来实现这一点,并检查是否存在任何非静态解决方案如果我没有错的话,“课前”基本上也是这样。