如何测试 returns 复杂对象的函数?
How do I test a function which returns a complex object?
我正在尝试测试 java 中的一个函数,它帮助我在 elasticsearch 中创建一个 bool 查询和 return 一个 QueryBuilder 对象。
public QueryBuilder getBoolQueryForRequest(request) {
// .. bool query creation logic
return boolQuery;
}
查询创建的逻辑很复杂,因此涉及到可以针对此函数的 return 值断言的对象。我应该如何进行测试?
这个link讲的是将QueryBuilder转换为字符串查询然后比较,但是同样,测试原代码的唯一方法是使用原代码创建对象,这是一种对我来说是第 22 条军规..
IHMO,为构建的 Elastic 查询编写单元测试没有任何意义。
就像您要测试 JPA 查询一样,不是针对数据库返回的响应,而是针对查询的文本。
如何确保它在针对您的 ElasticSearch 数据库执行时是正确的,并且在语法方面也是有效的?
我认为与数据库查询类似,弹性查询测试作为集成测试更有意义。
不幸的是,我没有机会在我工作的 Elastic 开发人员中设置它,但你可以获得一些反馈 here and from that post,一些想法:
Use the Gradle tools elasticsearch already has. You can read some
information about this here:
https://github.com/elastic/elasticsearch/issues/21119 620
Use the Maven plugin:
https://github.com/alexcojocaru/elasticsearch-maven-plugin 785
Use Ant scripts like
http://david.pilato.fr/blog/2016/10/18/elasticsearch-real-integration-tests-updated-for-ga
Using Docker: https://www.testcontainers.org/modules/elasticsearch
Using Docker from maven:
https://github.com/dadoonet/fscrawler/blob/e15dddf72b1ed094dad279d492e4e0314f73683f/pom.xml#L241-L28992
我正在尝试测试 java 中的一个函数,它帮助我在 elasticsearch 中创建一个 bool 查询和 return 一个 QueryBuilder 对象。
public QueryBuilder getBoolQueryForRequest(request) {
// .. bool query creation logic
return boolQuery;
}
查询创建的逻辑很复杂,因此涉及到可以针对此函数的 return 值断言的对象。我应该如何进行测试?
这个link讲的是将QueryBuilder转换为字符串查询然后比较,但是同样,测试原代码的唯一方法是使用原代码创建对象,这是一种对我来说是第 22 条军规..
IHMO,为构建的 Elastic 查询编写单元测试没有任何意义。
就像您要测试 JPA 查询一样,不是针对数据库返回的响应,而是针对查询的文本。
如何确保它在针对您的 ElasticSearch 数据库执行时是正确的,并且在语法方面也是有效的?
我认为与数据库查询类似,弹性查询测试作为集成测试更有意义。
不幸的是,我没有机会在我工作的 Elastic 开发人员中设置它,但你可以获得一些反馈 here and from that post,一些想法:
Use the Gradle tools elasticsearch already has. You can read some information about this here: https://github.com/elastic/elasticsearch/issues/21119 620
Use the Maven plugin: https://github.com/alexcojocaru/elasticsearch-maven-plugin 785
Use Ant scripts like http://david.pilato.fr/blog/2016/10/18/elasticsearch-real-integration-tests-updated-for-ga
Using Docker: https://www.testcontainers.org/modules/elasticsearch
Using Docker from maven: https://github.com/dadoonet/fscrawler/blob/e15dddf72b1ed094dad279d492e4e0314f73683f/pom.xml#L241-L28992