0

期待どおりにコンパイルして実行するクラスがあります(実行ごとに1つのテストノードを追加します):

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 に答える