我正在为我的大学的一个项目编写后端,但遇到一个我不理解的错误。
我正在与IntelliJ,Gradle一起使用,并将Spock用作测试环境。该项目的目标之一是利用Amazon NoSQL数据库解决方案DynamoDB。要测试后端的方法,请使用AmazonDB Local。
目前,我正在为后端的各种方法编写测试……或者至少我尝试过。当我运行我的第一个测试时,一旦达到“ GetBookWithTitle”方法,我就会收到NoSuchMethodException异常。(有趣的事实:“ AddBook”方法似乎可以正常工作)。
这是测试的代码:
def "Test adding a book to the database"(){
when: "Adding a book"
methods.AddBook("TestBook", "Sebastian Müller", 1990, "Gregors", "FunkyTestCover", mapper);
then: "The book should be added"
methods.GetBookWithTitle("TestBook", mapper) != null;
}
这是“ GetBookWithTitle”方法的来源:
public Book GetBookWithTitle(String title, DynamoDBMapper mapper){
Book result = mapper.load(Book.class, title);
return result;
}
我尝试了什么:-使用相应的gradle任务清理项目-手动删除项目的“ build”文件夹-反编译.class文件以确保存在“ GetBookWithTitle”
所以我的问题是:是否有人提供了此错误的根源?
如果提供的信息不足,我会给您更多:)
好的,我找到了答案。这与DynamoDB完全不同,它与DynamoDB及其将数据库项映射到Java类的功能有关。映射器类显然需要我的Book类没有的标准构造函数。
对于那些感兴趣的人:
DynamoDBMapper.load方法在内部调用Class.NewInstance()。此方法只能使用不带参数的标准构造函数/构造函数。由于我的班级中没有此类构造函数,因此他抛出了NoSuchMethodException。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句