2009-06-01 35 views
17

Tôi đang mã hóa một số thử nghiệm cho ứng dụng chỉ mục solr-indexer của mình. Sau khi thực hành thử nghiệm tốt nhất, tôi muốn viết mã tự phụ thuộc, chỉ cần tải schema.xmlsolrconfig.xml và tạo cây dữ liệu tạm thời cho các thử nghiệm tìm kiếm chỉ mục. Khi ứng dụng được viết nhiều nhất trong java, tôi đang làm việc với thư viện SolrJ, nhưng tôi đang gặp vấn đề (tốt, tôi bị lạc trong vũ trụ của corecontainers-coredescriptor-coreconfig-solrcore ...) Bất cứ ai cũng có thể đặt ở đây một số mã để tạo ra một Embedded Server tải cấu hình và cũng ghi vào một dữ liệu tham số-pased-dir?Kiểm tra Solr thông qua Embedded Server

+3

ĐƯỢC CẨN THẬN !!!! Chỉ có JUnit 4.7 hỗ trợ các phương pháp được nêu dưới đây, tôi tin. Có một số loại thiết lập() lỗi gọi động xảy ra trong các phiên bản mới hơn của JUnit với bài kiểm tra Cơ sở Solr. – jayunit100

+0

Tôi đã trả lời một câu hỏi tương tự tại đây: http://stackoverflow.com/a/23102896/1410035 –

Trả lời

10

Bạn có thể bắt đầu bằng số SolrExampleTests mở rộng SolrExampleTestBase mở rộng AbstractSolrTestCase.

Đây cũng là SampleTest.

Ngoài ra, hãy xem các chủ đề thisthis.

+1

SolrExampleTests: http://svn.apache.org/repos/asf/lucene/solr/tags/release- 1.4.0/src/test/org/apache/solr/client/solrj/SolrExampleTests.java – High6

+2

Điều này đề cập đến 1.4 phiên bản của solr. Nếu bạn cần phiên bản 3.5 của các lớp đó thì sẽ có một tạo tác giả trên nền maven. http://mvnrepository.com/artifact/org.apache.solr/solr-test-framework – unscene

7

Đây là một ví dụ cho một trường hợp thử nghiệm đơn giản. Solr là thư mục chứa các file cấu hình Solr của bạn:

 
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")); 
    } 
} 

Xem bài đăng trên blog này để biết thêm: Solr Integration Tests

+1

Tôi sẽ báo trước tất cả các câu trả lời với câu trả lời mới: đó là - nếu bạn đang sử dụng junit 4.7, bạn có thể sử dụng phương pháp này. Nếu bạn sử dụng một JUnit cao hơn, bây giờ, bạn không thể. – jayunit100

5

Trước tiên, bạn cần phải thiết lập Solr bạn Home Directory, trong đó có solr.xml và conf thư mục chứa solrconfig. xml, schema.xml, v.v.

Sau đó bạn có thể sử dụng mã đơn giản và cơ bản này cho 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()); 
} 

Tôi hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan