草庐IT

java - 为什么使用 JUnit 进行测试?

也许我的问题是一个新手问题,但我无法真正理解在什么情况下我会使用junit?无论我是编写简单的应用程序还是大型应用程序,我都使用System.out语句对其进行测试,这对我来说非常容易。为什么要使用JUnit创建测试类,如果我们仍然需要调用相同的方法,在项目中创建不必要的文件夹,检查它们返回的内容,然后我们需要对所有内容进行注释,那么我们会产生开销?为什么不编写一个类并使用System.out立即对其进行测试,但不创建测试类?PS。我从未参与过我刚刚学习的大型项目。那么目的是什么? 最佳答案 这不是测试,而是“手动查看输出”(在商业

java - JUnit 混淆 : use 'extends TestCase' or '@Test' ?

我发现JUnit的正确使用(或至少是文档)非常令人困惑。这个问题既可以作为future的引用,也可以作为一个真实的问题。如果我理解正确的话,创建和运行JUnit测试有两种主要方法:方法A(JUnit3风格):创建一个扩展TestCase的类,并使用单词test开始测试方法。当将该类作为JUnit测试运行时(在Eclipse中),所有以单词test开头的方法都会自动运行。importjunit.framework.TestCase;publicclassDummyTestAextendsTestCase{publicvoidtestSum(){inta=5;intb=10;intresu

java - 在 Junit Test 中覆盖默认 Spring-Boot application.properties 设置

我有一个Spring-Boot应用程序,其中默认属性设置在类路径(src/main/resources/application.properties)中的application.properties文件中。我想用test.properties文件(src/test/resources/test.properties)中声明的属性覆盖我的JUnit测试中的一些默认设置我通常有一个专门的配置类用于我的Junit测试,例如packagefoo.bar.test;importorg.springframework.boot.autoconfigure.EnableAutoConfigurati

java - 带有 Junit 4.7 "!!! JUnit version 3.8 or later expected:"的 IntelliJ IDEA

当我尝试在IntelliJIDEA中运行以下测试时我收到消息:"!!!JUnitversion3.8orlaterexpected:"需要注意的是这是一个Android我正在IntelliJIDEA9中从事的项目。publicclassGameScoreUtilTest{@TestpublicvoidtestCalculateResults()throwsException{finalGamegame=newGame();finalPlayerplayer1=newPlayer();{finalPlayedHoleplayedHole=newPlayedHole();playedHol

java - 获取 JUnit 4 中当前正在执行的测试的名称

在JUnit3中,我可以像这样获取当前正在运行的测试的名称:publicclassMyTestextendsTestCase{publicvoidtestSomething(){System.out.println("Currenttestis"+getName());...}}将打印“当前测试是testSomething”。在JUnit4中是否有任何开箱即用或简单的方法可以做到这一点?背景:显然,我不想只打印测试的名称。我想加载存储在与测试同名的资源中的测试特定数据。你知道,conventionoverconfiguration等等。 最佳答案

java - 2 个 JUnit 断言类之间的差异

JUnit框架包含2个Assert类(显然在不同的包中),每个类的方法看起来都非常相似。谁能解释这是为什么?我指的类是:junit.framework.Assert和org.junit.Assert. 最佳答案 (JUnit3的)旧方法是通过扩展junit.framework.TestCase来标记测试类。继承的junit.framework.Assert本身和您的测试类获得了以这种方式调用断言方法的能力。从JUnit第4版开始,该框架使用Annotations来标记测试。所以你不再需要扩展TestCase。但这意味着,断言方法不可

java - System.out.println() 的 JUnit 测试

我需要为一个设计不佳的旧应用程序编写JUnit测试,并且将大量错误消息写入标准输出。当getResponse(Stringrequest)方法正常运行时,它会返回一个XML响应:@BeforeClasspublicstaticvoidsetUpClass()throwsException{Propertiesqueries=loadPropertiesFile("requests.properties");Propertiesresponses=loadPropertiesFile("responses.properties");instance=newResponseGenerato

java - 有条件地忽略 JUnit 4 中的测试

好的,所以@Ignore注释非常适合标记不应运行的测试用例。但是,有时我想忽略基于运行时信息的测试。例如,如果我有一个并发测试需要在具有一定数量内核的机器上运行。如果这个测试是在单处理器机器上运行的,我认为只通过测试是不正确的(因为它还没有运行),而且测试失败并破坏构建肯定是不对的.所以我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过但记录测试未运行)。我相当确定注释不会给我这种灵active,并且怀疑我需要为相关类手动创建测试套件。但是,该文档没有提及任何关于此的内容并查看API也不清楚这将如何以编程方式完成(即我如何以编程方式创建Test的实例或类似于

java - Maven 找不到要运行的 JUnit 测试

我有一个maven程序,它编译得很好。当我运行mvntest时,它不会运行任何测试(在TESTs标题下显示没有要运行的测试。)。我已经用一个super简单的设置重新创建了这个问题,我将在下面包括使用-X运行时的输出。单元测试在Eclipse中运行良好(无论是使用其默认的junit包,还是当我包含maven下载的junit.jar时)。mvntest-compile也正确地在test-classes下创建了类。我在带有Maven3.0.2和java1.6.0_24的OSX10.6.7上运行它。目录结构如下:/my_program/pom.xml/my_program/src/main/j

JUNIT5 + Mockito

目录一、前言二、Maven依赖2.1JUNIT52.2Mockito32.3surefire三、UT示例3.1业务代码3.2单元测试一、前言JUNIT和Mockito这两个单元测试框架在Java工程中被广泛应用。但到2021年,仍有很多开发者在使用JUNIT4+Mockito2+PowerMock,但不得不说,这套配置已经开始过时。如今,JUNIT5已经迭代到5.8.x,Mockito也进入了4.0.0阶段,我们可以开始尝试基于JUNIT5+Mockito3来进行单测的开发。由于PowerMock在JUNIT5上无法工作,所以不再使用PowerMock。Mockito3.4后,已经支持mock