2014-08-26 7 views
0

Я пишу несколько JUnits для класса, который я написал. Этот класс отвечает за обеспечение создания локального кеша (простой параллельный кэш карт). Вызов построения кеша содержится в конструкторе;Как инициализировать кеш для JUnit

public DBFactoryController(){ 
    buildCache(); 
    notifcation.startPushManager(); 
} 

Что происходит в моем тестовом классе я создаю переменную экземпляра DBFactoryController

private DBFactoryController controller = new DBFactoryController(); 

Однако из того, что я прочитал, новый экземпляр тестового класса создается для каждого теста, это означает, что мой кеш восстанавливается для каждого теста, который замедляет мои тесты.

Есть ли способ, которым я могу структурировать это, чтобы мой кеш был построен только один раз?

Благодаря

+0

Если ваш контроллер не имеет статуса, вы можете создать его как статическое поле в тестовом классе. –

ответ

0

Простейшие могут создать статический экземпляр вашего DBFactoryController:

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

    public DBFactoryController() { 
     buildCache(); 
     notifcation.startPushManager(); 
    } 
} 

Затем вы можете инициализировать экземпляр DBFactoryController в тестовом случае, как это:

private DBFactoryController controller = DBFactoryController.getInstance(); 

Есть, вероятно, более элегантные решения с использованием механизмов JUnit, но это, на мой взгляд, самое простое.

Смежные вопросы