繁体   English   中英

JUnit 5 的 Spring 测试属性

Spring Test Properties with JUnit 5

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我现在开始使用 JUnit 5 和 Spring Boot 进行测试。 我有一个带有控制器、服务和存储库的 Rest API,以及一些使用@value从我的application.properties获取属性的实用application.properties 我没有使用 Spring 的“配置文件”,只是使用默认配置。

我的应用程序主要:

@EnableScheduling
@EnableDiscoveryClient
@ComponentScan
@SpringBootApplication
public class MyRestApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyRestApiApplication.class, args);
    }

}

使用@value的类:

@Component
public class JWTUtils implements Serializable {

    @Value("${jwt.validity}")
    public String JWT_TOKEN_VALIDITY;

    @Value("${jwt.secret}")
    private String secret;

    // There's no constructors in the class.
}

主要测试类:

@SpringBootTest
class MyRestApiApplicationTests {

    @Test
    void contextLoads() {
    }
}

我需要属性的测试类:

class JWTUtilsTest {

    JWTUtils jwtUtils;

    @Test
    void getUsernameFromToken() {
        jwtUtils = new JWTUtils();
        assertNotNull(jwtUtils.JWT_TOKEN_VALIDITY);
        String username = jwtUtils.getUsernameFromToken("token-here");
        assertNotNull(username);
        assertEquals(username, "admin");
    }
}

我的项目架构是:

main/
├── java/
│   ├── com.foo.controller/
│   ├── com.foo.model/
│   ├── com.foo.repository/
│   └── com.foo.service/
└── resources/
    ├── application.properties
    ├── banner.txt
    
test/
├── java/
│   ├── com.foo.controller/
│   ├── com.foo.model/
│   ├── com.foo.repository/
│   └── com.foo.service/
└── resources/
    ├── application-test.properties

我在主测试类中尝试了“@TestPropertySource”和/或“@ActiveProfiles("test")”,但没有奏效。 还尝试了“@RunWith(SpringRunner.class)”。

当我运行这个测试时,我的“秘密”值为“null”,这应该是我的application.properties存在的值

我尝试将“@Autowired”放入我的JWTUtils jwtUtils但结果为空。 @Autowired 没有用。

1 个回复
  1. JWTUtilsTest不是春季启动测试。 因此没有 spring boot 魔法(比如注入配置值)
  2. 您正在自己创建JWTUtils的测试实例。 要让 spring 施展魔法,您必须让 spring 创建它(例如,通过使用@Autowired进行注释并使JWTUtilsTest成为 spring 启动测试。
4 Spring JUnit测试

我喜欢测试我的弹簧代码: 使用eclipse运行此测试(作为JUNIT测试)只会产生Nullpointer-Exception。 我做错了什么? 谢谢! ...

5 Spring Junit测试问题

我在春季创建Junit测试用例。 这里的BookingProcessService是一个接口,其实现类是BookingProcessServiceImpl.java。 在spring配置文件中,没有为此定义的bean id。 有什么方法可以使用'bookingProcessServi ...

8 Spring jUnit 测试属性文件

我有一个 jUnit 测试,它有自己的属性文件(application-test.properties)和它的 spring 配置文件(application-core-test.xml)。 其中一种方法使用由 spring config 实例化的对象,即 spring 组件。 类中的一个成员从 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM