我正在编写 Camel 单元测试。我与之交互的一项服务是 Solr。使用模拟测试后,我想编写启动本地 solr 实例的测试。
到目前为止,我已尝试利用 RestTestBase Solr 类 (org.apache.solr.util.RestTestBase)。因为我正在编写单元测试,所以我没有扩展该类,只是尝试使用它提供的静态方法。以下内容不起作用:
RestTestBase.createJettyAndHarness("src/test/resources/solr",
"solrconfig.xml", "schema.xml",
"/solr", true, null);
int solrPort = RestTestBase.jetty.getLocalPort();
String solrURL = "localhost:"+Integer.toString(solrPort)+"/solr";
...
我在我的 pom.xml 中包含了 solr 和 jetty。关于如何以编程方式启动和关闭 solr 实例有什么建议吗? (因为我使用的是camel单元测试,所以我不喜欢扩展RestTestBase)
最佳答案
请参阅camel-solr 单元测试以获取一些完整的示例... SolrComponentTestSupport
基本上是这样...
@BeforeClass
public static void beforeClass() throws Exception {
// Set appropriate paths for Solr to use.
System.setProperty("solr.solr.home", "src/test/resources/solr");
System.setProperty("solr.data.dir", "target/test-classes/solr/data");
// Instruct Solr to keep the index in memory, for faster testing.
System.setProperty("solr.directoryFactory", "solr.RAMDirectoryFactory");
// Start a Solr instance.
solrRunner = new JettySolrRunner("src/test/resources/solr", "/solr", getPort());
solrRunner.start();
solrServer = new HttpSolrServer("http://localhost:" + getPort() + "/solr");
}
@AfterClass
public static void afterClass() throws Exception {
if (solrRunner != null) {
solrRunner.stop();
}
}
关于java - 如何在单元测试中站起来然后关闭 Solr 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24307634/