如何从命令行(没有 Maven/Gradle)启动 JUnit 5(平台)?

2024-06-22

我想从命令行运行一个包含 JUnit 5 测试的类。不幸的是,我有一些外部依赖项阻止我使用 Maven、Gradle 或其他构建系统。

在 JUnit 4 中,我可以像这样完成这个任务

java .:"lib/*" org.junit.runner.JUnitCore TestClass

JUnit 5 有等效的吗?我只是想知道测试是否成功,与在 IntelliJ 中运行时类似。

TestClass.java

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Collections;

import static org.junit.jupiter.api.Assertions.*;

public class TestClass {

    private static ArrayList<Student> students;
    private static ArrayList<Student> inAgeOrderStudents;
    private static ArrayList<Student> inNameOrderStudents;

    @BeforeAll
    static void setUp(){
        initializeStudents();
        initSortedAgeStudents();
        initSortedNameStudents();
    }

    @BeforeEach
    void reloadStudents() {
        Collections.shuffle(students);
    }

   static void initializeStudents(){
        students = new ArrayList<Student>();

        students.add(new Student(18, "Tim"));
        students.add(new Student(18, "Tim"));
        students.add(new Student(16, "Jean"));
        students.add(new Student(14, "Lin"));
        students.add(new Student(19, "Sam"));
    }

    static void initSortedAgeStudents(){
        inAgeOrderStudents = new ArrayList<Student>();
        inAgeOrderStudents.add(new Student(14, "Lin"));
        inAgeOrderStudents.add(new Student(16, "Jean"));
        inAgeOrderStudents.add(new Student(18, "Tim"));
        inAgeOrderStudents.add(new Student(18, "Tim"));
        inAgeOrderStudents.add(new Student(19, "Sam"));
    }

    static void initSortedNameStudents(){
        inNameOrderStudents = new ArrayList<Student>();
        inNameOrderStudents.add(new Student(16, "Jean"));
        inNameOrderStudents.add(new Student(14, "Lin"));
        inNameOrderStudents.add(new Student(19, "Sam"));
        inNameOrderStudents.add(new Student(18, "Tim"));
        inNameOrderStudents.add(new Student(18, "Tim"));
    }



    @Test
    void testMergeSort() {
        assertNotEquals(students, inAgeOrderStudents);
        StudentSortSearch.mergesort(students,StudentSortSearch.SortSearchCriteria.AGE);
        assertEquals(14,students.get(0).getAge());
        assertEquals(19,students.get(4).getAge());
        assertEquals(students, inAgeOrderStudents);

        assertEquals(true,students.equals(inAgeOrderStudents));
    }

    @Test
    void testQuickSort() {
        StudentSortSearch.quickSort(students,StudentSortSearch.SortSearchCriteria.NAME);
        assertEquals("Jean",students.get(0).getName());
        assertEquals("Tim",students.get(4).getName());

        assertEquals(students, inNameOrderStudents);
    }

    @Test
    void testBinarySearch() {
        StudentSortSearch searcher = new StudentSortSearch();
        ArrayList<Student> searchResults = searcher.binarySearch(students, 18);
        assertEquals(2, searchResults.size());
        assertEquals(18,searchResults.get(1).getAge());
        assertEquals(18,searchResults.get(0).getAge());

        searchResults = searcher.binarySearch(students, "Lin");
        assertEquals(1, searchResults.size());
        assertEquals(14,searchResults.get(0).getAge());
    }
}

当然可以,使用ConsoleLauncher.

The ConsoleLauncher是一个命令行 Java 应用程序,可以让您 启动JUnit平台从控制台。例如,它可以是 用来运行JUnit 复古 and JUnit木星测试和打印测试 执行结果到控制台。

一个可执行文件*junit-platform-console-standalone-<version>.jar*所有 包含的依赖项发布在中央 Maven 存储库中 在下面junit 平台控制台独立 https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone目录。您可以运行 独立的 ConsoleLauncher 如下所示。

java -jar junit-platform-console-standalone-<version>.jar <Options>

有关选项的详细信息,请咨询https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher please.

根据您的示例并使用 JUnit 平台版本进行定制1.3.1,命令可能如下所示:

$ mkdir out
$ javac -d out Student.java StudentSortSearch.java
$ javac -d out -cp out:junit-platform-console-standalone-1.3.1.jar TestClass.java
$ java -jar junit-platform-console-standalone-1.3.1.jar --class-path out --scan-class-path
╷
├─ JUnit Jupiter ✔
│  └─ TestClass ✔
│     └─ test() ✔
└─ JUnit Vintage ✔

Test run finished after 67 ms
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从命令行(没有 Maven/Gradle)启动 JUnit 5(平台)? 的相关文章

  • 多线程以原子方式对大量值求和

    我正在开发一个应用程序 其中有大量线程 并且必须自动添加 100 个值 我在用AtomicLong效果很好 但仍需要提高性能 有没有比 AtomicLong 提供更好性能的东西 您可以使用长加法器 https docs oracle com
  • 在记录活动中使用 readConfiguration 方法

    为了在小型 Java 桌面应用程序中使用日志记录 我试图深入了解一些方法的操作 我使用一个非常愚蠢的小Java程序来测试它们 特别是 在测试 LogManager readConfiguration 方法的行为时 我发现了一些奇怪的事情 在
  • Hibernate统计打印HQL:null

    我是使用休眠的新手 我打开了统计信息 与普通的 HQL 查询一起 我得到了许多这样的统计信息 INFO Statistics HQL null time 1724ms rows blah 有人可以以任何方式帮助我为什么null查询大约需要
  • RSA Java 加密和 Node.js 解密不起作用

    我有一个系统 需要在 javascript 中生成 RSA 密钥对 然后将公钥存储在服务器端的数据库中 作为字符串 然后 Java 中的服务器端将使用存储的公钥对字符串进行加密密钥并将其发送到客户端 客户端将使用私钥解密该字符串 我在客户端
  • 从 java 代码运行 Python 脚本

    这是我第一次在java中尝试python 我正在尝试从我的代码执行 python 脚本 如下所示 Process process Runtime getRuntime exec python C Users username Desktop
  • 使用 org.eclipse.xsd 和 Maven2 分析 XML 模式

    我正在尝试实现示例代码本文 http help eclipse org help32 index jsp topic org eclipse xsd doc references articles dwtip1 scpw index htm
  • java应用程序,线程在终止MySQL连接后挂起

    我有一些工作线程正在运行 其中包括 MySQL 和 mysql connector java 5 1 20 当我杀死一些 SQL 语句 使用 mysql 客户端的kill 连接id 时 java线程挂起 这应该抛出一些异常 jstack 打
  • 为什么 (Oracle) JVM 对内存使用有固定上限 (-Xmx)?

    本着提问的精神Java 为什么存在 MaxPermSize https stackoverflow com questions 3356005 java why does maxpermsize exist 我想问一下为什么Oracle J
  • 识别包含本机方法实现的库文件/源

    如何识别包含本机方法实现的库文件 Ex public native String intern 我在哪里可以找到实施 source code of String intern 方法 找到了答案String intern 与快速谷歌搜索 ht
  • 如何在Java中验证字符串是否是有效的URL(包括深层链接)[重复]

    这个问题在这里已经有答案了 如何在 Java 中验证字符串是否是有效的 URL 包括深层链接 对于以下测试用例 该方法应返回 true http www example com gizmos https www example com gi
  • Java Reflection:为什么这么慢?

    我一直避免使用 Java 反射 因为它速度缓慢 我在当前项目的设计中达到了一个点 能够使用它将使我的代码更具可读性和优雅性 所以我决定尝试一下 我只是对这种差异感到惊讶 我注意到有时运行时间几乎延长了 100 倍 即使在这个简单的例子中 它
  • 菜单项标题未显示

    菜单项的标题未显示在片段内 我在菜单文件中有两个项目 第一个是带有图标和标签的showAsAction always在工具栏中显示图标 第二个只有标题 我不知道这里出了什么问题 菜单项的所有操作均有效 例如下面 菜单 销售 xml menu
  • Java XPath API - 获取表示子树的字符串

    我的问题不是关于 xpath 语法 而是与 xpath 周围的 java API 有关 考虑以下 xml
  • Java - 动态创建子类

    我想以编程方式创建一个子类 我想我的选择很少 Javassist CGLib BCEL 或 ASM 用例是一个应用程序的内部是面向类的 而扩展是基于类的 因此 我不能将单个类作为由外部化脚本驱动的多个扩展的基础 现在 我该怎么做呢 我找到了
  • PHP:系统时区设置错误

    我尝试在 MAMP 下的终端中使用 PHP 但出现与系统时区设置相关的错误 我该如何修复这个错误 应用程序 MAMP bin php5 bin php 回声 php PHP 严格标准 PHP 启动 它 依赖系统是不安全的 时区设置 请使用
  • Scala 不可变 Map 速度慢

    当我创建地图时 我有一段代码 val map gtfLineArr 8 split map split collect case Array k v gt k v toMap 然后我使用这张地图来创建我的对象 case class MyOb
  • 如何处理JFreeChart中的SpiderWebPlot?

    发现 JFreeChart 我在使用时遇到了问题蜘蛛网情节 http www jfree org jfreechart api javadoc org jfree chart plot SpiderWebPlot html 这就是我今天所拥
  • Java中ThreadFactory的使用

    有人可以简要解释一下如何以及何时使用 ThreadFactory 吗 使用和不使用 ThreadFactory 的示例可能确实有助于理解差异 Thanks 这是一种可能的用法 假设您有一个ExecutorService它执行你的Runnab
  • JFrame.repaint() 和 JPanel.repaint() 之间的区别

    谁能解释一下两者之间的区别JPanel repaint 方法和JFrame repaint 方法 我想两者都调用paintComponent JPanel 中的方法 请澄清 谢谢 Calling repaint 在任何组件上都会向重绘管理器
  • 从 google play 中提取统计信息

    我正在建立一些统计数据 并希望获得来自 google play 应用程序商店 的统计数据 最受欢迎 下载量 价格等信息 有谁知道是否有这个 API 或者我必须自己抓取它 有一个名为 android market api 的项目http co

随机推荐

  • 如何获取C/C++系统语言?

    如何获取C C 系统语言 例如 en US 或 en GB 在 POSIX 系统上 它看起来像 setlocale LC CTYPE NULL 将返回当前区域设置
  • 从包含 5 个以上项目的自定义选项卡栏的导航视图中删除“更多”按钮

    您好 我在 swift ui 中创建了一个自定义选项卡栏 其中包含 6 个选项卡 每个选项卡都嵌入 nivation 视图中 当我选择第五个或第六个选项卡时 我会在顶部看到一个 更多 按钮 这几乎就像导航链接的后退按钮 我怎样才能删除这个
  • 使用 Photoshop 脚本编写“Console.log” - ExtendScript Toolkit

    我第一次编写一些 Photoshop 脚本 如果有一个类似 console log 的函数来在 Javascript 控制台中输出数组和对象值 那肯定会很棒 ExtendScript 工具包应用程序 http www adobe com d
  • 查找 int 中的第 n 个 SET 位

    我想要找到的位置不仅仅是最低设置位n最低的设置但是 我是NOT谈论价值n第 位位置 例如 假设我有 0000 1101 1000 0100 1100 1000 1010 0000 我想找到设置的第四位 然后我希望它返回 0000 0000
  • 将 html 插入 div 并保持 ui-router ui-sref 属性正常工作

    这是我的案例 我有一个 div 需要从函数注入一些 html div div 在我的控制器中我有 this getMyLink function return a my link a 它有效 但根本不起作用 我的 html 最后只有 a m
  • 在 JSON 序列化之前更改对象

    我想在 JSON 序列化之前更改一个对象 为此 我创建了一个带有更改方法的接口 并且任何实现该接口的类都将 尝试 更改自身 是的 可能这样做不是最佳选择 但例如清酒就可以了 JsonSerialize using ChangesValues
  • 如何在一个网页上连接多个 MySQL 数据库?

    我的信息分布在多个数据库中 并且希望使用 PHP 将所有信息放到一个网页上 我想知道如何在单个 PHP 网页上连接到多个数据库 我知道如何使用以下方式连接到单个数据库 dbh mysql connect hostname username
  • PyMySQL 无法连接到本地主机上的 MySQL

    我正在尝试使用 PyMySQL 连接到本地主机上的 MySQL import pymysql conn pymysql connect db base user root passwd pwd host localhost 但是 在 Pyt
  • Protobuf.net 异常 - 检查元数据时超时

    I am 有时尝试使用 protobuf net 反序列化对象时收到以下异常 我很惊讶 因为我从来没有超过一个线程同时反序列化同一个对象 并且 protobuf net 源似乎没有使用任何静态对象进行反序列化 该异常确实提出了一个解决方案
  • jQuery 绑定事件触发事件

    我调用下面的第一个函数将第二个函数绑定到 onClick 事件 奇怪的是 调用第一个函数会导致触发第二个函数 第一个函数中的 LinkName 参数是表 td 元素的名称 可能不相关 function EnableExpand LinkNa
  • 在 main 方法中使用省略号?

    如果我在 main 方法中使用省略号会有什么不同吗 public static void main String args 没有不同 该 省略号 语法称为varargs http docs oracle com javase 1 5 0 d
  • 从 winforms picturebox 中的 url 加载的图像是否存储在缓存中?

    在 winform 应用程序的表单中 我必须显示存储在网络服务器上的图像 多个图像 显示图像没有问题 因为我可以简单地将 URL 分配给图片框 picturebox1 ImageLocation http example com Image
  • 如何用seaborn绘制阴影误差带?

    我希望创建如下图 其中显示一些值和标准差 我有两组值 包含通过两种不同方法获得的平均值和标准差 我想这样做seaborn https seaborn pydata org index html 但我不知道具体该怎么做 因为官方示例 http
  • 与多名推销员一起旅行的推销员?

    我有一个问题已被有效地简化为具有多个推销员的旅行推销员问题 我有一个要从初始位置访问的城市列表 并且必须访问销售人员数量有限的所有城市 我正在尝试想出一个启发式方法 想知道是否有人可以帮忙 例如 如果我有 20 个城市 有 2 名销售员 我
  • 如何使用Python PIL模糊图像的非矩形或圆形区域?

    在 Python 中使用 PIL 我将一个 PNG 图像叠加在另一个更大的图像之上 较小的图像是半透明的 我希望较小图像后面的区域在较大图像上变得模糊 下面的代码模糊了一个矩形区域 box 3270 1150 4030 2250 x1 y1
  • 如何在NetLogo中创建迷宫墙?

    我正在尝试创建一个有 2 个出口的 5x5 网格 并在其中放置一些墙 换句话说 我想创造一个迷宫或迷宫 我想知道是否有办法使边框线变粗或仅更改补丁一侧的颜色 我想只放一名特工进去 并通过奖励他一些积分让他找到出口 Q 学习算法 有人有想法吗
  • 如何使用 dplyr 添加灵活的增量列?

    我想使用 dplyr 将 增量 列添加到数据集 增量将计算为当前行值与前一行值之间的差 挑战在于 紧邻的前一行不一定是正确的行 因为需要进行一些过滤 考虑这个数据集 LEVEL TIME 3 0000 2 0010 2 0020 1 003
  • JQuery 中的跨站点 HTTP 身份验证

    我想看看是否可以登录使用 HTTP 身份验证的第三个站点 理想情况下 浏览器将存储凭据 不幸的是 这每次都会失败 任何帮助将不胜感激 我正在使用 base64 Jquery 插件 我已经测试过它可以工作 那么 两个问题 如何查看HTTP状态
  • 仅接受一种文件类型

    from tkinter import filedialog as fd filename fd askopenfilename title Select file filetypes CSV Files csv All 打开文件夹以选择文
  • 如何从命令行(没有 Maven/Gradle)启动 JUnit 5(平台)?

    我想从命令行运行一个包含 JUnit 5 测试的类 不幸的是 我有一些外部依赖项阻止我使用 Maven Gradle 或其他构建系统 在 JUnit 4 中 我可以像这样完成这个任务 java lib org junit runner JU