java - 在子类测试之前从 JUnit 基类运行测试

标签 java unit-testing inheritance junit

对于某种测试,我有一个抽象父类(super class)和扩展这个父类(super class)的子类。在父类(super class)中,我有一个名为 test0IfDirectoryCopied 的测试,它总是在测试子类时执行。它检查子类中设置的资源是否正确设置。

虽然这很好,但不幸的是,这个 test0IfDirectoryCopied 只有在子类的所有测试都运行后才会执行。由于它作为一种先决条件,如果它在任何子类测试之前执行将是最有帮助的。

附加信息:子类和父类(super class)都用@FixMethodOrder(MethodSorters.NAME_ASCENDING)注解,test0IfDirectoryCopied是按字典序排列的最小条目

最佳答案

最新版本的 JUnit 有 Assume。基本上,如果假设失败,测试将被忽略。

如果你把它放在 @Before 中并且它失败了,测试类中的每个测试都将被忽略。

import static org.junit.Assume.*;
public class TestMySubClass extends TestSuperClass{

    @Before
    public void makesureDirectoryCopied(){

       assumeTrue( directoryCopied());
   }

   ...

directoryCopied() 就像你的 test0ifDirectoryCopied 除了它返回 truefalse 而不是抛出异常.

因为这是纯 JUnit,所以不需要额外的依赖。

See Assume tutorial了解更多信息

关于java - 在子类测试之前从 JUnit 基类运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29768952/

相关文章:

java - 什么时候使用 super() ?

java - GWT FlexTable 按钮问题

Python:没有名为unittest的模块。我怎样才能解决这个问题?

c# - 使用 Serilog 静态记录器将日志输出到 Xunit

c++ - 如何在控制反转中创建类构造函数所需的对象?

java - 如何让子类用扩展类型重写父类抽象方法?

java - (Triangle 类)设计一个名为 Triangle 的类,它扩展了 GeometricObject

java - Maven - 部署静态内容

java - 如何减小 JavaFX 图表的大小使其适合 ListCell?

java - Java 中的正则表达式,如果找到 "N","E","W","S"以外的任何字符,则返回 false