2014-07-09 2 views
0

Мне задали вопрос, на который я не знал ответа. Он спросил меня.Run Test Suites с одним подключением к базе данных

  • У меня есть 5 тестовых наборов (каждый набор тестов будет иметь много тестовых примеров, написанных на Selenium)
  • Я хочу, чтобы открыть базу данных только один раз и запустить все тестовые наборы.

Как я могу это сделать?

Пожалуйста, помогите, Спасибо, JB.

+0

Имейте класс, реализующий шаблон проектирования singleton для подключения к вашей базе данных – singe3

ответ

0

singe31 правильный. Я сделал это раньше, чтобы выполнить эту точную вещь.

C#

public class DataAccessObject 
    { 
     private static DataAccessObject _dataObject = null; 
     private static readonly object _lock = new object(); 
     public static DataAccessObject dataObj { 
      get { 
       lock (_lock) { 
        if (_dataObject == null) { 
         _dataObject = new DataAccessObject(); 
        } 
        return _dataObject; 
       } 
      } 
     } 

     private DataAccessObject() 
     { 
      //populate your _dataObject in here 
     } 
    } 

Затем в коде вы можете сделать экземпляр вашей DataAccessObject равен государственной собственности private DataAccessObject _dataObject = DataAccessObject.dataObj

Это ударит свойство и тянуть в памяти только для чтения значение и присвоить его к вашей локальной переменной. Если он уже существует, он просто извлекает то, что находится в памяти, иначе он будет создавать экземпляр нового экземпляра и возвращать его, а следующий тест получит в памяти один.

_lock существует для потоков, если вы хотите 2 одновременно. Он заблокирует доступ к одному и заставит другого ждать, пока он не будет закончен перед запуском. Таким образом, вы только создаете экземпляр один раз вместо того, чтобы рисковать коррупцией, делая одно и перезаписывая его сразу же.

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