2

Solr 3.6 の junit テストのベスト プラクティスはあるのでしょうか。Solr スキーマのテストを自動化したい。以前の投稿で、EmbeddedSolrServer について言及しました。このクラスは、1.4 から 3.6 の間のどのバージョンからも放棄されたようです。プロジェクトには Spring 3.0.x と Maven を使用しています。私が検討したオプションは次のとおりです。

  1. Junit テストランナーを書く
  2. @Before または @BeforeClass メソッドに突堤のスタートアップ コードを配置します。
  3. Mavenでsolrサーバーを起動します(おそらく良いオプションではありません)
  4. 春のテストコンテキストにいくつかのコードを入れます
4

3 に答える 3

2

このページにあるものと同様のものを使用して、これらの種類のテストを実行しました。これらはすべて、Solr 3.4.0 上の EmbeddedSolrServer で実行されました。これは単純なアプローチですが、Solr スキーマ テストを自動化する場合は、これで十分であり、実装も難しくありません。、、およびへの 参照を追加
する:
junitsolr-coreslf4j-simpleservlet-apipom.xml

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
        <type>jar</type>
        <scope>test</scope>
    </dependency>
    <!-- dependencies needed for Solr integration test-->
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-core</artifactId>
        <version>1.4.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.6.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>test</scope>
    </dependency>

そして、テストケースの例として、彼はこれを追加します:

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 を使用していませんが、これはまだ良い出発点になると思います。

于 2012-05-29T21:05:27.480 に答える
0

私はテストにhttps://github.com/moliware/travis-solrを使用しています。おそらくあなたにも役立つでしょう。

于 2012-10-15T19:14:54.607 に答える