2013-05-09 75 views
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 '[email protected]' 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(); 
    } 

我的测试设置有问题吗?

回答

0

尝试把

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

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

Is there a basic template I can use to create a test?

+0

我不想为每个测试数据库。另外链接的例子是JUnit 4.我使用3。 – 2013-05-09 19:16:57

相关问题