2013-11-22 41 views
0

我对java和junit非常陌生。 我有一些测试案例/ pagetests像addTest.java,deleteTest.java。 我以下面使用单例类在java中的junit测试用例中调用方法

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
addTest.class, 
deleteTest.class 
}) 
public class JunitTestSuite { 
} 

所有这些测试用例的代码包括junit的测试套件下这些测试使用输入从分贝。为此,我在TestDBMethods.java中写了一个名为getValues的方法,该方法位于test/testdb路径中,它将返回我在测试用例中需要的所有值。

我面临的问题是我不想在每个测试用例中调用TestDBMethods.java类,因为这非常昂贵。所以我更喜欢包含一个仅调用TestDBMethods.java一次的单例类,并返回应该由所有其他测试用例使用的实例。 任何人都可以请帮我编写调用类TestDBMethods.java的单例类的代码并返回一个实例。

+0

看起来你需要使用设置方法:http://stackoverflow.com/questions/512184/best-practice-initialize-junit-class-fields-in-setup-or-at-declaration – Salil

+0

但是,你的单位测试不应该查询数据库并获取测试值,因为单元测试应该快速运行。你不能将这些测试值嵌入测试类本身吗? – Salil

回答

0

从您的描述来看,由于调用TestDBMethods的代价很高,因此您可以将TestDBMethods作为单例类来实现,而不是调用TestDBMethods的类。

据我所知,我们有很多方法来实现单..Below只是一个很简单的例子:

public class TestDBMethods{ 
     private static TestDBMethods instance; 
     private TestDBMethods(){} 
    public static TestDBMethods getInstance() { 
     if (instance == null) { 
      instance = new TestDBMethods(); 
    } 
     return instance; 
     } 

    public Object getValues(){ 
     return null; 
    } 
} 

通过这种方式,你可以使用TestDBMethods.getInstance.getValue()调用函数getValue(),并且在内存中只存在一个实例。