0

我有一个按预期编译和运行的类(每次执行添加一个测试节点):

public class ReqsDb {
    private final String STORE_DIR;
    public GraphDatabaseService graphDb;

    private static enum RelTypes implements RelationshipType {
        IDENTIFIES, SATIFIES
    }

    public ReqsDb(String dbPath) {
        STORE_DIR = dbPath;
        graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(STORE_DIR);
        registerShutdownHook(graphDb);
    }

    public void createTestNode() {
        Transaction tx = graphDb.beginTx();
        Node newNode;
        try {
            newNode = graphDb.createNode();
            newNode.setProperty("test", "test");
            tx.success();
        } finally {
            tx.finish();
        }
    }

    private static void registerShutdownHook(final GraphDatabaseService graphDb) {
        Runtime.getRuntime().addShutdownHook(new Thread() {
                    @Override
                    public void run() {
                        graphDb.shutdown();
                    }
        });
    }

    void shutDown() {
        graphDb.shutdown();
    }

    public static void main(String[] args) {
        ReqsDb testDb = new ReqsDb("target/testDb");
        testDb.createTestNode();
    }
}

但是测试函数 testCreateTestNode() 会导致错误:

java.lang.RuntimeException: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.StoreLockerLifecycleAdapter@4e3a2be1' was successfully initialized, but failed to start.

由于该函数是从 main() 调用的,因此我认为测试类有问题。

package com.github.dprentiss;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class ReqsDbTest extends TestCase {
    protected ReqsDb testDb = new ReqsDb("target/testDb");

    public ReqsDbTest(String testName) {
        super(testName);
    }

    public static Test suite() {
        return new TestSuite(ReqsDbTest.class);
    }

    public void testDbService() {
        assertNotNull(testDb);
    }

    public void testCreateTestNode() {
        testDb.createTestNode();
    }

    public void tearDown() {
        testDb.shutDown();
    }

我的测试设置有问题吗?

4

1 回答 1

0

试着放

protected ReqsDb testDb = new ReqsDb("target/testDb");

在 init 方法中。按照这个例子:

是否有可用于创建测试的基本模板?

于 2013-05-09T14:48:24.957 回答