gpt4 book ai didi

solr - Solr 3.6 JUnit 测试有推荐的方法吗?

转载 作者:行者123 更新时间:2023-12-04 05:44:57 25 4
gpt4 key购买 nike

我想知道 Solr 3.6 的 junit 测试是否有任何最佳实践。我想自动测试 Solr 模式。之前的帖子提到了 EmbeddedSolrServer。此类似乎已从 1.4 和 3.6 之间的任何版本中放弃。我在项目中使用 Spring 3.0.x 和 Maven。
我考虑的选项是:

  • 编写 Junit 测试运行程序
  • 将jetty启动代码放在@Before或@BeforeClass方法中
  • 在 maven 中启动 solr 服务器(可能不是一个好的选择)
  • 在 spring 测试上下文中放入一些代码
  • 最佳答案

    我使用了类似于 this 上的内容页面来运行这些类型的测试,所有这些测试都是在 Solr 3.4.0 上使用 EmbeddedSolrServer 完成的。这是一种简单的方法,但如果您想自动化 Solr 模式测试,这可能就足够了,并且不难实现。
    它基本上归结为:
    添加对 junit 的引用, solr-core , slf4j-simpleservlet-api给您的 pom.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,但我认为这仍然是一个很好的起点。

    关于solr - Solr 3.6 JUnit 测试有推荐的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796750/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com