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

不能在测试类中使用Autowired,但能在实现类中使用它?

岑俊明
2023-03-14

我试图测试一个@Controller类,其中有来自POJO的列表。我可以在另一个@RESTController类中使用@Autowired来连接控制器,但在同样的情况下,我不能将其用于测试。

user.java

@Data //from lombok
public class User  {
    private String Id;
    private String email;

    //constructor + getters and setters
}

UserContrell3.java

@Controller
public class UserController {

    private List<User> userRepo = new ArrayList<>();

    public UserController() {}

    public List<User> readAll() {
        return userRepo;
    }

    public void add(User user) {
        userRepo.add(user);
    }
}

在下一个类中,userresource.java我可以做@autowired

@RestController
@RequestMapping(UserResource.USER)
public class UserResource {
    public static final String USER = "/users";

    private UserController userController;

    @Autowired
    public UserResource(UserController userController) {
        this.userController = userController;
    }

    @GetMapping
    public List<User> readAll() {
        return userController.readAll();
    }

    @PostMapping
    public void addUser(@RequestBody User user) {
        userController.add(user);
    }
}

但是,在测试类UserTest.java中。我不能:

@SpringBootTest(classes = {cat.jhz.Main.MainApp.class})
@TestPropertySource("classpath:test.properties")
public class UserTest {

    // @Autowired **//NOT HERE** --> ERROR
    private UserController userRepo;

    @Autowired **//AND NOT HERE** --> ERROR
    public UserResource(UserController userController) {
        this.userController = userController;
    }

    @Test
    void testAddUserToUserController() {
        ...
    }

}

提前感谢!

共有1个答案

沈子昂
2023-03-14

简单但不太好-向UserTest类添加注释@ComponentScan

 类似资料:
  • 我正在使用autowiring(@Autowired)在JUnit测试类中注入依赖项,并面临NullPointerException。我想知道在JUnit测试类中是否可以进行自动布线。否则,应该如何在测试类中注入bean。我的代码如下- 主类/客户端-自动布线按预期工作。 服务接口和实现类接口IMessage 服务台:欢迎光临服务台 服务SayHelloService 主服务调用其他服务。自动装配

  • 我想问一下你的知识。一个Spring启动应用程序包含各种映射器。这些应该进行测试。要测试映射器,应该读取一个JSON文件。这个JSON文件加载在每个测试文件中。到目前为止,该功能已在每个测试类中实现,我想将功能外包给一个助手类。我尝试如下: 在测试类中,我调用助手如下: 很遗憾,我收到以下错误消息: 组织。springframework。豆。工厂UnsatifiedDependencyExcept

  • 在我的Spring Boot应用程序中,我尝试实现模板方法,在我的具体类中,我尝试使用泛型,如下所示: 模板界面:不确定我是否需要使用它? 模板抽象类: 混凝土等级: 我在dto中得到“无法解析‘T’中的方法‘getName’”。getName()行输入AbstractPDFGenerator。 我的问题是: 1.为了解决这个问题,我想从继承和的基类扩展T。但是,我不想从基类继承它们,因为它们没有

  • 我在React中测试ES6语法,并编写如下组件:

  • 我试图创建Espresso测试,并使用,问题是当我试图创建时,它调用真正的api调用,我希望截获它并模拟响应。 然后我创建了这个TestApp 这是我的TestAppComponent 注意:这里我创建了一个新模块,名为,其中BASE_URL为“http://localhost:8080”,我不知道是否需要其他模块。 因为它说它没有初始化。 我的mockWebServer甚至没有分发响应--尽管它

  • 我正在为服务开发测试用例。 另一个代码: