- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为我的 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/
我想为我的 BookService 编写一个测试。这就是那个测试。我不知道为什么我总是收到以下错误: org.junit.jupiter.api.extension.ParameterResoluti
美好的一天!我在与测试相关的问题上寻求帮助,但出现错误:刚开始学习Junit5,所以不明白为什么会报错 我使用了各种可能的解决方案来解决这个问题,但不幸的是它们导致了更多的错误: Junit 5 -
我知道 JUnit 5 在底层引入了重大更改,但这不是应该自动配置的吗? 构建.gradle: plugins { id 'org.springframework.boot' version
我是一名优秀的程序员,十分优秀!