我正在为我的solr-indexer应用程序编写一些测试代码。在测试最佳实践之后,我想编写代码独立的代码,只需加载schema.xml
和solrconfig.xml
并为索引搜索测试创建一个临时数据树。 由于应用程序大部分是用java编写的,我正在处理SolrJ库,但我遇到了问题(好吧,我迷失在corecontainers-coredescriptor-coreconfig-solrcore的宇宙中......) 任何人都可以将这里有一些代码来创建一个嵌入式服务器来加载配置,并写入一个参数为基础的数据目录?通过嵌入式服务器测试Solr
回答
您可以从SolrExampleTests开始,它延伸SolrExampleTestBase,它延伸到AbstractSolrTestCase。
也是这个SampleTest。
SolrExampleTests:http://svn.apache.org/repos/asf/lucene/solr/tags/release- 1.4.0/src/test/org/apache/solr/client/solrj/SolrExampleTests.java – High6 2011-08-26 15:32:14
这是指1.4版本的solr。如果你需要这些类的3.5版本,那么maven central有一个solr-test-framework artifact。 http://mvnrepository.com/artifact/org.apache.solr/solr-test-framework – unscene 2012-02-26 17:21:52
这是一个简单测试用例的例子。 Solr的是包含Solr的配置文件的目录:
import java.io.IOException; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer; import org.apache.solr.util.AbstractSolrTestCase; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.SolrParams; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; public class SolrSearchConfigTest extends AbstractSolrTestCase { private SolrServer server; @Override public String getSchemaFile() { return "solr/conf/schema.xml"; } @Override public String getSolrConfigFile() { return "solr/conf/solrconfig.xml"; } @Before @Override public void setUp() throws Exception { super.setUp(); server = new EmbeddedSolrServer(h.getCoreContainer(), h.getCore().getName()); } @Test public void testThatNoResultsAreReturned() throws SolrServerException { SolrParams params = new SolrQuery("text that is not found"); QueryResponse response = server.query(params); assertEquals(0L, response.getResults().getNumFound()); } @Test public void testThatDocumentIsFound() throws SolrServerException, IOException { SolrInputDocument document = new SolrInputDocument(); document.addField("id", "1"); document.addField("name", "my name"); server.add(document); server.commit(); SolrParams params = new SolrQuery("name"); QueryResponse response = server.query(params); assertEquals(1L, response.getResults().getNumFound()); assertEquals("1", response.getResults().get(0).get("id")); } }
更多信息请参阅本博文:Solr Integration Tests
我会用一个新的答案告诉所有的答案:这是 - 如果你使用的是junit 4.7,你可以使用这种方法。如果您现在使用更高的JUnit,则不能。 – jayunit100 2012-02-02 17:19:39
首先,您需要设置包含含有solrconfig solr.xml和conf文件夹你的Solr的主目录。 xml,schema.xml等。
之后,你可以使用这个简单和基本的代码为Solrj。
File solrHome = new File("Your/Solr/Home/Dir/");
File configFile = new File(solrHome, "solr.xml");
CoreContainer coreContainer = new CoreContainer(solrHome.toString(), configFile);
SolrServer solrServer = new EmbeddedSolrServer(coreContainer, "Your-Core-Name-in-solr.xml");
SolrQuery query = new SolrQuery("Your Solr Query");
QueryResponse rsp = solrServer.query(query);
SolrDocumentList docs = rsp.getResults();
Iterator<SolrDocument> i = docs.iterator();
while (i.hasNext()) {
System.out.println(i.next().toString());
}
我希望这会有所帮助。
- 1. 嵌入式Jetty测试Spring-Rest服务
- 2. Maven未将测试资源部署到嵌入式服务器
- 3. 如何在junit测试中停止cassandra嵌入式服务器
- 4. 单元测试中的弹簧嵌入式ldap服务器
- 5. 春嵌入式服务器
- 6. 嵌入式Web服务器
- 7. 从外部应用程序访问嵌入式Solr服务器
- 8. Neo4j嵌入式HA服务器模式
- 9. 嵌入式Solr DIH
- 10. 服务器测试
- 11. 只为嵌入式tomcat或嵌入式服务器创建Bean
- 12. 什么是嵌入式服务器和嵌入式Java库?
- 13. 测试嵌入式空间
- 14. Grails嵌入式服务器功能测试需要有效的SSL证书
- 15. Java中使用嵌入式Cassandra服务器测试Cassandra-Spark作业的示例
- 16. 嵌入式Java HTTP服务器
- 17. C#嵌入式FTP服务器
- 18. Neo4j服务器与嵌入式
- 19. .NET中的嵌入式Web服务器
- 20. 嵌入式应用服务器
- 21. 嵌入式服务器的Web技术
- 22. 嵌入式web服务器运行php
- 23. C#嵌入式smtp服务器
- 24. Neo4j rest服务器v/s嵌入式
- 25. 嵌入式C分析服务器迁移服务器URLURL
- 26. 通过HTTP访问嵌入式Solr实例
- 27. 如何通过分片连接嵌入式solr
- 28. 测试SMTP服务器正在通过C#运行
- 29. 通过桌面应用程序加载测试Web服务器
- 30. Grails 2.1.x控制器单元通过服务测试
小心!我相信只有JUnit 4.7支持下面概述的方法。在使用Solr Base测试的较新版本的JUnit中会出现某种setup()动态调用错误。 – jayunit100 2012-02-02 17:21:06
我在这里回答了一个类似的问题:http://stackoverflow.com/a/23102896/1410035 – 2014-04-16 07:37:44