我的项目不是基于Spring的。它是一个带有Hibernate.Building工具的java - Maven。
我在运行junits之前将数据从一个数据库加载到HSQL DB。
我的数据库工具类:
public class DatabaseUtil {
SchemaLoad schemaLoad = new SchemaLoad();
DataLoad dataLoad = new DataLoad();
boolean dataLoaded = false;
static final String filename1 = "test1.txt";
static final String filename2 = "text2.txt";
void dbLoad() throws SQLException {
if (!dataLoaded) {
schemaLoad.cloneSchema(filename1);
dataLoad.exportData(filename2);
System.out.println("***********executed**********8");
dataLoaded = true;
}
}
}
第一个测试用例:
public class TestCase {
TrainRepository trainRepository = new TrainRepositoryImpl();
DatabaseUtil databaseUtil = new DatabaseUtil();
@BeforeClass
private void setUp() throws SQLException {
databaseUtil.dbLoad();
}
@Test
private void positiveTestCaseForTrainRepo() throws Exception {
//TestCases
}
第二个测试用例:
公共类TestCase1 {
AirRepository airRepository = new AirRepositoryImpl();
DatabaseUtil databaseUtil = new DatabaseUtil();
@BeforeClass
private void setUp() throws SQLException {
databaseUtil.dbLoad();
}
@Test
private void positiveTestCaseForAirRepo() throws Exception {
//TestCases
}
两个测试用例都运行正常。但是它正在执行databaseUtil.dbLoad();每个junit的方法。
我的问题是我只需要加载数据库一次,即在第一个junit开始之前需要设置一些指示符。进一步的junits需要检查数据库实例如果数据库实例在那里它不应该加载数据,即DatabaseUtil类需要单身。
在mvn安装阶段,所有junits都通过maven suffire插件运行。
请帮助我实现这一目标。
答案 0 :(得分:0)
每次都会调用void dbLoad()。
然后使用静态变量来跟踪
static boolean dataLoaded = false;
答案 1 :(得分:0)
如果你不使用spring,你需要自己实现缓存。你有几个选择。使用静态字段与某种同步(如果您使用/计划使用线程)。另一个选择是切换到提供@BeforeGroup
功能的testng,这样你就可以标记所有的db测试并在之前运行初始化。