SpringDemo(4)--Junit单元测试

一、Junit单元测试

1.1、前提说明

  • 本次改造,在 cart-service 购物车服务中进行

1.2、cart-service项目的 pom.xml,增加对 测试模块 的依赖

<!-- Junit测试,相关依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

1.3、新建一个用于测试的 service,在该service中生成要测试的数据MyData

package com.ohz.cart.service;

import lombok.Data;
import org.springframework.stereotype.Service;

/**
 * 新建一个用于测试的 service
 */
@Service
public class MyJunitService {

    @Data
    public class MyData{
        private String name = "OHZ";
        private boolean adultFlag = true;
        private int workYear = 8;
    }

}

1.4、新建Junit测试类 MyJunitServiceTest

  • 在类上加 @RunWith(SpringRunner.class) 、@SpringBootTest 两个注解
  • 测试的方法上,加 @Test 注解。注意测试方法的修饰符,必须为 public 。
package com.ohz.cart;

import com.ohz.cart.service.MyJunitService;
import lombok.extern.slf4j.Slf4j;
import org.junit.*;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyJunitServiceTest {

    @Autowired
    MyJunitService myJunitService;

    //要测试的数据
    private MyJunitService.MyData myData;


    @BeforeClass
    public static void beforeClass() {
        log.info("=================BeforeClass================");
    }

    @AfterClass
    public static void afterClass() {
        log.info("=================AfterClass================");
    }

    @Before
    public void beforeTest() {
        log.info("*********** before test ***********");
        myData = myJunitService.new MyData();
        log.info("初始化要测试的数据 MyData = {} ", myData);
    }

    @After
    public void afterTest() {
        log.info("*********** after test ***********");
    }

    @Test
    public void testMyData(){
        log.info("testMyData() 方法");

        Assert.assertEquals("name error.", myData.getName(), "OHZ");
        log.info("name = " + myData.getName());

        Assert.assertEquals("未成年", myData.isAdultFlag(), true);
        log.info("adultFlag = " + myData.isAdultFlag());

        Assert.assertEquals("年限未达到十年", myData.getWorkYear() < 10, true);
        log.info("年限未达到十年,workYear = " + myData.getWorkYear());

    }

    @Test
    public void testWorkYear(){
        log.info("testWorkYear() 方法");

        assert myData.getWorkYear() < 5 : "年限超过了5年";
        log.info("年限超过了5年,workYear =" + myData.getWorkYear());
    }

}

1.5、测试验证

1.5.1、测试通过时,程序正常执行,然后正常运行结束。

        如,执行 MyJunitServiceTest测试类的 testMyData()方法,日志如下:

2023-07-23 23:36:14.087  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : *********** before test ***********
2023-07-23 23:36:14.088  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : 初始化要测试的数据 MyData = MyJunitService.MyData(name=OHZ, adultFlag=true, workYear=8) 
2023-07-23 23:36:14.089  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : testMyData() 方法
2023-07-23 23:36:14.089  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : name = OHZ
2023-07-23 23:36:14.089  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : adultFlag = true
2023-07-23 23:36:14.089  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : 年限未达到十年,workYear = 8
2023-07-23 23:36:14.091  INFO 48700 --- [           main] com.ohz.cart.MyJunitServiceTest          : *********** after test ***********

1.5.2、测试未通过时,程序会抛出异常,并将断言判断失败时的提示信息打印出来,然后程序结束。

        如,执行 MyJunitServiceTest测试类的 testWorkYear()方法,日志如下:

2023-07-23 23:42:02.998  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : *********** before test ***********
2023-07-23 23:42:02.998  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : 初始化要测试的数据 MyData = MyJunitService.MyData(name=OHZ, adultFlag=true, workYear=8) 
2023-07-23 23:42:03.000  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : testWorkYear() 方法
2023-07-23 23:42:03.002  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : *********** after test ***********

java.lang.AssertionError: 年限超过了5年

	at com.ohz.cart.MyJunitServiceTest.testWorkYear(MyJunitServiceTest.java:64)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
	at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

二、Junit单元测试,功能说明

2.1、@RunWith(SpringRunner.class)、@SpringBootTest 注解的作用

 @RunWith 是JUnit中的注解,用来通知JUnit单元测试框架不要使用内置的方式进行单元测试,如:“@RunWith(SpringRunner.class)”,就是指定使用SpringRunner类来提供单元测试。

 @SpringBootTest 注解则是用于Spring Boot应用的测试,默认会分局报名逐级往上查找Spring Boot主程序,也就是@SpringBootApplocation注解,并在单元测试启动的时候启动该类来创建Spring上下文。所以我们在对Spring Boot应用进行单元测试的时候,在日志输出都可以看到Spring Boot应用的启动日志。

2.2、@BeforeClass、@AfterClass 注解

  • 方法上有 @BeforeClass 注解时,在测试类开始时,会执行该方法。
  • 方法上有 @AfterClass 注解时,在测试类关闭时,会执行该方法。
  • 【特别注意】有 @BeforeClass 、@AfterClass 注解的方法,需要static修饰。
  • 【特别注意】无论测试方法的断言判断是成功还是失败,有 @AfterClass 注解的方法,最后都会执行。
    @BeforeClass
    public static void beforeClass() {
        log.info("=================BeforeClass================");
    }

    @AfterClass
    public static void afterClass() {
        log.info("=================AfterClass================");
    }

        参考第一部分 1.5.2 的测试,全量日志如下:

Didea.test.cyclic.buffer.size=1048576 "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=57996:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit-rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit5-rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/tools.jar:/Users/zhangyangyang/IdeaProjects/ohz/ohz-cart/cart-service/target/test-classes:/Users/zhangyangyang/IdeaProjects/ohz/ohz-cart/cart-service/target/classes:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter-web/2.3.2.RELEASE/spring-boot-starter-web-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter/2.3.2.RELEASE/spring-boot-starter-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot/2.3.2.RELEASE/spring-boot-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-autoconfigure/2.3.2.RELEASE/spring-boot-autoconfigure-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter-logging/2.3.2.RELEASE/spring-boot-starter-logging-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/Users/zhangyangyang/mavenRepository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/Users/zhangyangyang/mavenRepository/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar:/Users/zhangyangyang/mavenRepository/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar:/Users/zhangyangyang/mavenRepository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar:/Users/zhangyangyang/mavenRepository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/Users/zhangyangyang/mavenRepository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter-json/2.3.2.RELEASE/spring-boot-starter-json-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1.jar:/Users/zhangyangyang/mavenRepository/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1.jar:/Users/zhangyangyang/mavenRepository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.1/jackson-datatype-jdk8-2.11.1.jar:/Users/zhangyangyang/mavenRepository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.1/jackson-datatype-jsr310-2.11.1.jar:/Users/zhangyangyang/mavenRepository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.1/jackson-module-parameter-names-2.11.1.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter-tomcat/2.3.2.RELEASE/spring-boot-starter-tomcat-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/apache/tomcat/embed/tomcat-embed-core/9.0.37/tomcat-embed-core-9.0.37.jar:/Users/zhangyangyang/mavenRepository/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar:/Users/zhangyangyang/mavenRepository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.37/tomcat-embed-websocket-9.0.37.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-web/5.2.8.RELEASE/spring-web-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-beans/5.2.8.RELEASE/spring-beans-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-webmvc/5.2.8.RELEASE/spring-webmvc-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-aop/5.2.8.RELEASE/spring-aop-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-context/5.2.8.RELEASE/spring-context-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-expression/5.2.8.RELEASE/spring-expression-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/cloud/spring-cloud-starter-alibaba-nacos-config/2.2.9.RELEASE/spring-cloud-starter-alibaba-nacos-config-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/spring/spring-context-support/1.0.11/spring-context-support-1.0.11.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/nacos/nacos-client/2.1.0/nacos-client-2.1.0.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/nacos/nacos-auth-plugin/2.1.0/nacos-auth-plugin-2.1.0.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/nacos/nacos-encryption-plugin/2.1.0/nacos-encryption-plugin-2.1.0.jar:/Users/zhangyangyang/mavenRepository/commons-codec/commons-codec/1.14/commons-codec-1.14.jar:/Users/zhangyangyang/mavenRepository/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1.jar:/Users/zhangyangyang/mavenRepository/org/apache/httpcomponents/httpasyncclient/4.1.4/httpasyncclient-4.1.4.jar:/Users/zhangyangyang/mavenRepository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/zhangyangyang/mavenRepository/org/apache/httpcomponents/httpcore-nio/4.4.13/httpcore-nio-4.4.13.jar:/Users/zhangyangyang/mavenRepository/org/apache/httpcomponents/httpclient/4.5.12/httpclient-4.5.12.jar:/Users/zhangyangyang/mavenRepository/io/prometheus/simpleclient/0.5.0/simpleclient-0.5.0.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-commons/2.2.9.RELEASE/spring-cloud-commons-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/security/spring-security-crypto/5.3.3.RELEASE/spring-security-crypto-5.3.3.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-context/2.2.9.RELEASE/spring-cloud-context-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/cloud/spring-cloud-starter-alibaba-nacos-discovery/2.2.9.RELEASE/spring-cloud-starter-alibaba-nacos-discovery-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/com/alibaba/cloud/spring-cloud-alibaba-commons/2.2.9.RELEASE/spring-cloud-alibaba-commons-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-starter-netflix-ribbon/2.2.9.RELEASE/spring-cloud-starter-netflix-ribbon-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-netflix-ribbon/2.2.9.RELEASE/spring-cloud-netflix-ribbon-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-netflix-archaius/2.2.9.RELEASE/spring-cloud-netflix-archaius-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-starter-netflix-archaius/2.2.9.RELEASE/spring-cloud-starter-netflix-archaius-2.2.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/commons-configuration/commons-configuration/1.8/commons-configuration-1.8.jar:/Users/zhangyangyang/mavenRepository/com/netflix/ribbon/ribbon/2.3.0/ribbon-2.3.0.jar:/Users/zhangyangyang/mavenRepository/com/netflix/ribbon/ribbon-transport/2.3.0/ribbon-transport-2.3.0.jar:/Users/zhangyangyang/mavenRepository/io/reactivex/rxnetty-contexts/0.4.9/rxnetty-contexts-0.4.9.jar:/Users/zhangyangyang/mavenRepository/io/reactivex/rxnetty-servo/0.4.9/rxnetty-servo-0.4.9.jar:/Users/zhangyangyang/mavenRepository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/zhangyangyang/mavenRepository/io/reactivex/rxnetty/0.4.9/rxnetty-0.4.9.jar:/Users/zhangyangyang/mavenRepository/com/netflix/ribbon/ribbon-core/2.3.0/ribbon-core-2.3.0.jar:/Users/zhangyangyang/mavenRepository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar:/Users/zhangyangyang/mavenRepository/com/netflix/ribbon/ribbon-httpclient/2.3.0/ribbon-httpclient-2.3.0.jar:/Users/zhangyangyang/mavenRepository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar:/Users/zhangyangyang/mavenRepository/com/sun/jersey/jersey-client/1.19.1/jersey-client-1.19.1.jar:/Users/zhangyangyang/mavenRepository/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1.jar:/Users/zhangyangyang/mavenRepository/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar:/Users/zhangyangyang/mavenRepository/com/sun/jersey/contribs/jersey-apache-client4/1.19.1/jersey-apache-client4-1.19.1.jar:/Users/zhangyangyang/mavenRepository/com/netflix/servo/servo-core/0.10.1/servo-core-0.10.1.jar:/Users/zhangyangyang/mavenRepository/com/netflix/servo/servo-internal/0.10.1/servo-internal-0.10.1.jar:/Users/zhangyangyang/mavenRepository/com/netflix/netflix-commons/netflix-commons-util/0.1.1/netflix-commons-util-0.1.1.jar:/Users/zhangyangyang/mavenRepository/com/netflix/ribbon/ribbon-loadbalancer/2.3.0/ribbon-loadbalancer-2.3.0.jar:/Users/zhangyangyang/mavenRepository/com/netflix/netflix-commons/netflix-statistics/0.1.1/netflix-statistics-0.1.1.jar:/Users/zhangyangyang/mavenRepository/io/reactivex/rxjava/1.3.8/rxjava-1.3.8.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-starter-openfeign/2.2.5.RELEASE/spring-cloud-starter-openfeign-2.2.5.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-starter/2.2.5.RELEASE/spring-cloud-starter-2.2.5.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/security/spring-security-rsa/1.0.9.RELEASE/spring-security-rsa-1.0.9.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/bouncycastle/bcpkix-jdk15on/1.64/bcpkix-jdk15on-1.64.jar:/Users/zhangyangyang/mavenRepository/org/bouncycastle/bcprov-jdk15on/1.64/bcprov-jdk15on-1.64.jar:/Users/zhangyangyang/mavenRepository/org/springframework/cloud/spring-cloud-openfeign-core/2.2.5.RELEASE/spring-cloud-openfeign-core-2.2.5.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter-aop/2.3.2.RELEASE/spring-boot-starter-aop-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/aspectj/aspectjweaver/1.9.6/aspectjweaver-1.9.6.jar:/Users/zhangyangyang/mavenRepository/io/github/openfeign/form/feign-form-spring/3.8.0/feign-form-spring-3.8.0.jar:/Users/zhangyangyang/mavenRepository/io/github/openfeign/form/feign-form/3.8.0/feign-form-3.8.0.jar:/Users/zhangyangyang/mavenRepository/commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4.jar:/Users/zhangyangyang/mavenRepository/commons-io/commons-io/2.2/commons-io-2.2.jar:/Users/zhangyangyang/mavenRepository/io/github/openfeign/feign-core/10.10.1/feign-core-10.10.1.jar:/Users/zhangyangyang/mavenRepository/io/github/openfeign/feign-slf4j/10.10.1/feign-slf4j-10.10.1.jar:/Users/zhangyangyang/mavenRepository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/Users/zhangyangyang/mavenRepository/io/github/openfeign/feign-hystrix/10.10.1/feign-hystrix-10.10.1.jar:/Users/zhangyangyang/mavenRepository/com/netflix/archaius/archaius-core/0.7.6/archaius-core-0.7.6.jar:/Users/zhangyangyang/mavenRepository/com/netflix/hystrix/hystrix-core/1.5.18/hystrix-core-1.5.18.jar:/Users/zhangyangyang/mavenRepository/org/hdrhistogram/HdrHistogram/2.1.9/HdrHistogram-2.1.9.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-starter-test/2.3.2.RELEASE/spring-boot-starter-test-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-test/2.3.2.RELEASE/spring-boot-test-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/boot/spring-boot-test-autoconfigure/2.3.2.RELEASE/spring-boot-test-autoconfigure-2.3.2.RELEASE.jar:/Users/zhangyangyang/mavenRepository/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar:/Users/zhangyangyang/mavenRepository/net/minidev/json-smart/2.3/json-smart-2.3.jar:/Users/zhangyangyang/mavenRepository/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar:/Users/zhangyangyang/mavenRepository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar:/Users/zhangyangyang/mavenRepository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar:/Users/zhangyangyang/mavenRepository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar:/Users/zhangyangyang/mavenRepository/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1.jar:/Users/zhangyangyang/mavenRepository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/zhangyangyang/mavenRepository/org/junit/jupiter/junit-jupiter/5.6.2/junit-jupiter-5.6.2.jar:/Users/zhangyangyang/mavenRepository/org/junit/jupiter/junit-jupiter-api/5.6.2/junit-jupiter-api-5.6.2.jar:/Users/zhangyangyang/mavenRepository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/zhangyangyang/mavenRepository/org/junit/platform/junit-platform-commons/1.6.2/junit-platform-commons-1.6.2.jar:/Users/zhangyangyang/mavenRepository/org/junit/jupiter/junit-jupiter-params/5.6.2/junit-jupiter-params-5.6.2.jar:/Users/zhangyangyang/mavenRepository/org/junit/jupiter/junit-jupiter-engine/5.6.2/junit-jupiter-engine-5.6.2.jar:/Users/zhangyangyang/mavenRepository/org/junit/vintage/junit-vintage-engine/5.6.2/junit-vintage-engine-5.6.2.jar:/Users/zhangyangyang/mavenRepository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/Users/zhangyangyang/mavenRepository/org/junit/platform/junit-platform-engine/1.6.2/junit-platform-engine-1.6.2.jar:/Users/zhangyangyang/mavenRepository/junit/junit/4.13/junit-4.13.jar:/Users/zhangyangyang/mavenRepository/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3.jar:/Users/zhangyangyang/mavenRepository/net/bytebuddy/byte-buddy/1.10.13/byte-buddy-1.10.13.jar:/Users/zhangyangyang/mavenRepository/net/bytebuddy/byte-buddy-agent/1.10.13/byte-buddy-agent-1.10.13.jar:/Users/zhangyangyang/mavenRepository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/Users/zhangyangyang/mavenRepository/org/mockito/mockito-junit-jupiter/3.3.3/mockito-junit-jupiter-3.3.3.jar:/Users/zhangyangyang/mavenRepository/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar:/Users/zhangyangyang/mavenRepository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-core/5.2.8.RELEASE/spring-core-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-jcl/5.2.8.RELEASE/spring-jcl-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/springframework/spring-test/5.2.8.RELEASE/spring-test-5.2.8.RELEASE.jar:/Users/zhangyangyang/mavenRepository/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0.jar:/Users/zhangyangyang/mavenRepository/com/ohz/base/base-common/0.0.1-SNAPSHOT/base-common-0.0.1-SNAPSHOT.jar:/Users/zhangyangyang/mavenRepository/org/apache/commons/commons-lang3/3.10/commons-lang3-3.10.jar:/Users/zhangyangyang/mavenRepository/com/google/guava/guava/30.1-jre/guava-30.1-jre.jar:/Users/zhangyangyang/mavenRepository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/Users/zhangyangyang/mavenRepository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/zhangyangyang/mavenRepository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/zhangyangyang/mavenRepository/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.jar:/Users/zhangyangyang/mavenRepository/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar:/Users/zhangyangyang/mavenRepository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar:/Users/zhangyangyang/mavenRepository/com/ohz/user/user-api/0.0.1-SNAPSHOT/user-api-0.0.1-SNAPSHOT.jar:/Users/zhangyangyang/mavenRepository/org/projectlombok/lombok/1.16.14/lombok-1.16.14.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.ohz.cart.MyJunitServiceTest,testWorkYear
23:41:57.755 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.ohz.cart.MyJunitServiceTest]
23:41:57.759 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
23:41:57.769 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
23:41:57.812 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.ohz.cart.MyJunitServiceTest] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
23:41:57.828 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.ohz.cart.MyJunitServiceTest], using SpringBootContextLoader
23:41:57.835 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.ohz.cart.MyJunitServiceTest]: class path resource [com/ohz/cart/MyJunitServiceTest-context.xml] does not exist
23:41:57.836 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.ohz.cart.MyJunitServiceTest]: class path resource [com/ohz/cart/MyJunitServiceTestContext.groovy] does not exist
23:41:57.836 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.ohz.cart.MyJunitServiceTest]: no resource found for suffixes {-context.xml, Context.groovy}.
23:41:57.837 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.ohz.cart.MyJunitServiceTest]: MyJunitServiceTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
23:41:57.890 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.ohz.cart.MyJunitServiceTest]
23:41:57.956 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/zhangyangyang/IdeaProjects/ohz/ohz-cart/cart-service/target/classes/com/ohz/cart/CartServiceApplication.class]
23:41:57.957 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.ohz.cart.CartServiceApplication for test class com.ohz.cart.MyJunitServiceTest
23:41:58.070 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.ohz.cart.MyJunitServiceTest]: using defaults.
23:41:58.071 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.test.context.event.EventPublishingTestExecutionListener]
23:41:58.084 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/TransactionDefinition]
23:41:58.086 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
23:41:58.087 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@1e800aaa, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@185a6e9, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@6f03482, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@9d5509a, org.springframework.test.context.support.DirtiesContextTestExecutionListener@179ece50, org.springframework.test.context.event.EventPublishingTestExecutionListener@3b0090a4, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@3cd3e762, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@1fa121e2, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@7eac9008, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@4116aac9, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@62ddbd7e, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener@74e52ef6]
23:41:58.089 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.091 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]
23:41:58.092 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.092 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]
23:41:58.092 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.092 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]23:41:58.101 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.102 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]23:41:58.103 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.103 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]
23:41:58.103 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.103 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]
23:41:58.108 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@6200f9cb testClass = MyJunitServiceTest, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@2002fc1d testClass = MyJunitServiceTest, locations = '{}', classes = '{class com.ohz.cart.CartServiceApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@78186a70, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@4cf4d528, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1f021e6c, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@6366ebe0, org.springframework.boot.test.context.SpringBootTestArgs@1], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null].
23:41:58.110 [main] INFO com.ohz.cart.MyJunitServiceTest - =================BeforeClass================
23:41:58.110 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.ohz.cart.MyJunitServiceTest]
23:41:58.110 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.ohz.cart.MyJunitServiceTest]
23:41:58.130 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}
2023-07-23 23:41:59.045  INFO 49879 --- [           main] c.a.n.p.a.s.c.ClientAuthPluginManager    : [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-07-23 23:41:59.046  INFO 49879 --- [           main] c.a.n.p.a.s.c.ClientAuthPluginManager    : [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.2.RELEASE)

2023-07-23 23:42:00.439  WARN 49879 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[cart-service] & group[DEFAULT_GROUP]
2023-07-23 23:42:00.445  WARN 49879 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[cart-service.yml] & group[DEFAULT_GROUP]
2023-07-23 23:42:00.456  INFO 49879 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-cart-service-env.yml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-cart-service.yml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-cart-service,DEFAULT_GROUP'}]
2023-07-23 23:42:00.466  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : The following profiles are active: env
2023-07-23 23:42:01.100  INFO 49879 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=ee5049e1-0435-350c-8b0f-3cbeaf6cc363
2023-07-23 23:42:01.693  WARN 49879 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2023-07-23 23:42:01.694  INFO 49879 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2023-07-23 23:42:01.701  WARN 49879 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2023-07-23 23:42:01.701  INFO 49879 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2023-07-23 23:42:01.952  INFO 49879 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2023-07-23 23:42:02.290  INFO 49879 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'Nacos-Watch-Task-Scheduler'
2023-07-23 23:42:02.542  INFO 49879 --- [           main] c.a.n.p.a.s.c.ClientAuthPluginManager    : [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-07-23 23:42:02.543  INFO 49879 --- [           main] c.a.n.p.a.s.c.ClientAuthPluginManager    : [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
2023-07-23 23:42:02.795  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : Started MyJunitServiceTest in 4.655 seconds (JVM running for 5.526)
2023-07-23 23:42:02.998  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : *********** before test ***********
2023-07-23 23:42:02.998  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : 初始化要测试的数据 MyData = MyJunitService.MyData(name=OHZ, adultFlag=true, workYear=8) 
2023-07-23 23:42:03.000  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : testWorkYear() 方法
2023-07-23 23:42:03.002  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : *********** after test ***********

java.lang.AssertionError: 年限超过了5年

	at com.ohz.cart.MyJunitServiceTest.testWorkYear(MyJunitServiceTest.java:64)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
	at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

2023-07-23 23:42:03.009  INFO 49879 --- [           main] com.ohz.cart.MyJunitServiceTest          : =================AfterClass================
2023-07-23 23:42:03.011  WARN 49879 --- [       Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Start destroying Publisher
2023-07-23 23:42:03.011  WARN 49879 --- [       Thread-2] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Start destroying common HttpClient
2023-07-23 23:42:03.011  WARN 49879 --- [       Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Destruction of the end
2023-07-23 23:42:03.011  WARN 49879 --- [       Thread-2] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Destruction of the end
2023-07-23 23:42:03.013  INFO 49879 --- [extShutdownHook] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'Nacos-Watch-Task-Scheduler'
2023-07-23 23:42:03.653  INFO 49879 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

Process finished with exit code 255

2.3、@Before、@After 注解

  • 方法上有 @Before 注解时,在 @Test 测试方法执行前,会执行该方法。
  • 方法上有 @After 注解时,在 @Test 测试方法执行完成后,会执行该方法。
  • 【特别注意】有 @Before 、@After 注解的方法,在当前测试类的 任何 @Test 测试方法执行前后,分别会执行一次。
  • 【特别注意】无论测试方法的断言判断是成功还是失败,有 @After 注解的方法,最后都会执行。
@Before
public void beforeTest() {
    log.info("*********** before test ***********");
    myData = myJunitService.new MyData();
    log.info("初始化要测试的数据 MyData = {} ", myData);
}

@After
public void afterTest() {
    log.info("*********** after test ***********");
}

2.4、Assert类中常用的方法


- assertEquals("提示信息",A,B):当判断A是否等于B,不等于就抛出错误。比较对象是调用的是equals()方法。
- assertSame("提示信息",A,B):判断对象是否相同。
- assertTrue("提示信息",A):判断条件A是否为真。
- assertFalse("提示信息",A):判断条件是否为假。
- assertNotNull("提示信息",A):判断对象是否不为空。
- assertNull("提示信息",A):判断对象是否为空。
- assertArrayEqual("提示信息",A,B):判断数组A和数组B是否相等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值