gpt4 book ai didi

java - 为什么在我什至不使用参数化测试时出现 ParameterResolutionException?

转载 作者:行者123 更新时间:2023-12-04 08:11:26 25 4
gpt4 key购买 nike

我想为我的 BookService 编写一个测试。这就是那个测试。我不知道为什么我总是收到以下错误:

org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter 
[com.mrfisherman.library.service.domain.BookService bookService] in constructor
[public com.mrfisherman.library.service.domain.BookServiceTest(com.mrfisherman.library.service.domain.BookService,
com.mrfisherman.library.persistence.repository.BookRepository)].

如您所见,我在这里没有使用参数化测试。提前致谢!

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Server.class)
class BookServiceTest {

private final BookService bookService;
private final BookRepository bookRepository;

public BookServiceTest(BookService bookService, BookRepository bookRepository) {
this.bookService = bookService;
this.bookRepository = bookRepository;
}

@Test
void saveBook() {
//given
Book book = new Book();
book.setTitle("Book 1");
book.setPublishYear(1990);
book.setType(BookFormat.REAL);
book.setIsbn("1234567890");
book.setDescription("Very good book");
book.setNumberOfPages(190);
book.setSummary("Very short summary");
book.setCategories(Set.of(new Category("horror"), new Category("drama")));

//when
bookService.saveBook(book);

//then
Optional<Book> loaded = bookRepository.findById(book.getId());
assertThat(loaded).isPresent();

}
}

最佳答案

在 JUnit Jupiter 中,每当测试类构造函数、生命周期方法(例如 @BeforeEach)或测试方法声明无法解析的参数时,就会抛出 ParameterResolutionException通过已注册的 ParameterResolver 扩展之一。

因此,即使您没有使用 @ParameterizedTest 方法,也可能会抛出 ParameterResolutionException

当使用 @SpringBootTest 时,SpringExtension 会自动为您注册。 SpringExtension 实现了来自 JUnit Jupiter 的 ParameterResolver 扩展 API,因此您可以将 ApplicationContext 中的 bean 注入(inject)到测试类的构造函数和方法中。

解决问题的最简单方法是使用 @Autowired 注释 BookServiceTest 构造函数。

有关更多信息和替代方法,请查看 Dependency Injection with SpringExtension Spring 引用文档的一部分。

关于java - 为什么在我什至不使用参数化测试时出现 ParameterResolutionException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65934665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com