Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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中不使用@Before运行第一个测试_Java_Unit Testing_Junit - Fatal编程技术网

Java 在JUnit中不使用@Before运行第一个测试

Java 在JUnit中不使用@Before运行第一个测试,java,unit-testing,junit,Java,Unit Testing,Junit,在使用JUnit对组件进行的大多数单元测试中,我都遇到了相同的问题: 我想在没有设置的情况下对组件运行第一个测试,以检查它是否正确初始化,然后我想以给定的方式对组件设置执行所有其他测试。 我通常会在所有测试开始时调用一个方法,但只有一个方法是丑陋且容易出错的。我还可以创建两个不同的类,其中一个只包含一个测试,但我认为这不是最方便的解决方案。 我试着四处搜索,找到了这个答案:,但据我所知,base.evaluate()调用将始终包含@Before语句。 有没有更好的方法来进行第一次未设置测试?您链

在使用JUnit对组件进行的大多数单元测试中,我都遇到了相同的问题: 我想在没有设置的情况下对组件运行第一个测试,以检查它是否正确初始化,然后我想以给定的方式对组件设置执行所有其他测试。 我通常会在所有测试开始时调用一个方法,但只有一个方法是丑陋且容易出错的。我还可以创建两个不同的类,其中一个只包含一个测试,但我认为这不是最方便的解决方案。 我试着四处搜索,找到了这个答案:,但据我所知,base.evaluate()调用将始终包含@Before语句。
有没有更好的方法来进行第一次未设置测试?

您链接的答案的意思是根本不使用@Before注释。相反,您将想要做的任何事情都放在@Before方法中,而不是

// run the before method here

注释。

您是否尝试过该解决方案?你有没有试过用这种方法来解决这个问题?我不认为还有其他选择。我目前使用的是附带的解决方案,但我希望测试代码尽可能简单、可读性更好,尽管这并不可怕,但我希望将样板文件移出,就像一个干净的注释一样。在Alexander Zak回答之前,我还没有理解的链接解决方案。为什么不让检查初始化的测试作用于与其他测试不同的对象引用,并允许@before为其他测试构造对象?只要它们是以相同的方式构造的,我看不出这种方法有任何问题。这确实是最直接的解决方案。谢谢事实上,这是有道理的。我想,创建一个规则,让执行器运行安装程序,可以重复使用,也很简单。您还可以创建自己的@ConditionalBefore注释,并让规则在测试类中搜索它