当前位置: 首页 > 知识库问答 >
问题:

未注入jUnit测试的bean

胥宏义
2023-03-14

我对SpringBeans的正确配置有问题。我的整个应用程序在Spring上运行正常,我想添加jUnit测试。不幸的是,豆子注射不当。我在同一个模块中有两个目录。我的整个应用程序都在里面:

/src/main/java/main/

这是正确的,我添加了restest。java和Beantest配置。java内部:

/src/test/java/main/

@SpringBootTest
@RunWith(Spring.Runner.class)
@ContextConfiguration(classes=BeanTestConfiguration.class)
class RestTest {

    @Autowired
    public String testString;


    @Test
    public void send() {
        System.out.println(testString);
        Assert.assertNotNull(testString);
    }
}

和配置BeanTestConfiguration

@Configuration
public class BeanTestConfiguration {
    @Bean
    public String testString() { return new String("Hello"); }
}

不幸的是,当我在发送方法上运行测试时,系统输出打印为空,并且断言抛出失败。我在IntelliJ中的项目结构中添加了Spring应用程序上下文

共有2个答案

沃瑾瑜
2023-03-14

由于您的测试类和方法是包私有的,所以我假设您使用的是jUnit 5。在JUnit5中,应该使用@ExtendWith注释,而不是@RunWith。尤其是SpringExtension

通过使用@ExtendWith(SpringExtension.class)注释测试类,开发人员可以实现基于JUnit Jupiter的标准单元和集成测试,同时获得TestContext框架的好处,例如支持加载应用程序上下文、测试实例的依赖注入、事务性测试方法执行、,等等

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#testcontext-junit jupiter分机

例如。

@SpringBootTest
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes=BeanTestConfiguration.class)
class RestTest {

    @Autowired
    public String testString;


    @Test
    void send() {
        System.out.println(testString);
        Assert.assertNotNull(testString);
    }
}
酆鸿哲
2023-03-14

谢谢大家的帮助。我发现我对进口有问题。我的@Test注释来自jUnit 5,而我在注释中有来自jUnit 4的SpringRunner,结果Spring工作不正确,bean没有被注入。

我想再一次感谢大家。

 类似资料:
  • 问题内容: 我使用SpringBeanAutowiringSupport在某些对象中进行bean注入。问题是,在jUnit测试中无法注入bean。为了进行测试,使用了SpringJUnit4ClassRunner。 有谁知道,为什么使用注入在jUnit测试中不起作用? 问题答案: 感谢M. Denium的帮助,他的解决方案得以奏效。

  • 问题内容: 我想对用Apache CXF编写的RESTful接口进行单元测试。 我使用ServletContext来加载一些资源,所以我有: 如果我将其部署在Glassfish上,则会注入ServletContext,并且它会按预期工作。但是我不知道如何将ServletContext注入我的服务类中,以便可以使用JUnit测试对其进行测试。 我使用Spring 3.0,JUnit 4,CXF 2.

  • 我正在尝试为一个类编写测试,该类具有从属性文件注入的字段值。我试图在运行TestNG测试时利用注释获取其中的值,但它似乎忽略了我的属性文件。 有几十个类似的问题,我试着仔细阅读,并尽可能尝试它们的实现。但我的问题似乎略有不同,原因如下: > @TestProperty tSource和@Property tySource不适用于JUnit:谈论JUnit而不是TestNG(可能相关,也可能不相关?

  • Summary NoSQL databases provide looser consistency restrictions than traditional SQL databases. By requiring fewer relational constraints and consistency checks, NoSQL databases often offer performanc

  • Summary In this section, some SQL Injection techniques for PostgreSQL will be discussed. These techniques have the following characteristics: PHP Connector allows multiple statements to be executed by

  • Summary SQL Injection vulnerabilities occur whenever input is used in the construction of a SQL query without being adequately constrained or sanitized. The use of dynamic SQL (the construction of SQL