JUnit4的入口类 - JUnitCore

本文介绍了 JUnitCore 的基本使用方法及启动流程。通过一个简单的示例展示了如何利用 JUnitCore 运行测试类,并捕获失败信息进行打印。此外,还详细解释了 JUnitCore 的启动过程,包括创建 Computer 对象、构造 Request 和 Runner 实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

JUnitCore作为JUnit4的入口类(包含了静态的main方法),定义了一系列方法来启动JUnit完成对测试类的反射执行

编程方式使用 :

public static void main(String[] args) {
    Result result = JUnitCore.runClasses(MyTest.class); // 测试类的class对象
    for (Failure failure : result.getFailures()) { // 对于执行失败的情况打印失败信息
        System.out.println(failure.toString());
    }
}

启动流程

1、创建一个默认的Computer(负责调用RunnerBuilder创建Runner实例),调用以下代码

    public static Result runClasses(Computer computer, Class<?>... classes) {
        return new JUnitCore().run(computer, classes);
    }
2、根据传入的class对象,构造一个Request,代码如下

    public Result run(Computer computer, Class<?>... classes) {
        return run(Request.classes(computer, classes));
    }

根据不同的注解创建不同的RunnerBuilder,比如@Test的话就是JUnit4Builder

在创建Runner时会扫描和验证加在类和方法上的注解来构造正确的测试逻辑

    public static Request classes(Computer computer, Class<?>... classes) {
        try {
            AllDefaultPossibilitiesBuilder builder = new AllDefaultPossibilitiesBuilder();
            Runner suite = computer.getSuite(builder, classes);
            return runner(suite);
        } catch (InitializationError e) {
            return runner(new ErrorReportingRunner(e, classes));
        }
    }

3、根据reqeust获取runner并启动
    public Result run(Request request) {
        return run(request.getRunner());
    }

    public Result run(Runner runner) {
        Result result = new Result();
        RunListener listener = result.createListener();
        notifier.addFirstListener(listener);
        try {
            notifier.fireTestRunStarted(runner.getDescription());
            runner.run(notifier);
            notifier.fireTestRunFinished(result);
        } finally {
            removeListener(listener);
        }
        return result;
    }


时序图



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值