2016-06-16 3 views
2

В этой ситуации - я использую scalatest, и у меня есть тест, который включает использование базы данных. При локальном тестировании хост базы данных является одним из значений, при тестировании на моем тестовом сервере (jenkins) хост базы данных является другим значением. Я хочу, чтобы указать хост в качестве аргумента командной строки при вызове sbt test.Как получить доступ к значениям конфигурации конфигурации в scalatest?

Похоже, что scalatest позволяет передать аргумент командной строки, который затем хранится в конфигурационной карте. Я не понимаю, как именно я могу получить доступ к этому значению конфигурации карты изнутри теста.

ответ

0

Используйте withFixture(OneArgTest) (я также рекомендую прочитать другие разделы документа). немного Адаптация к вашему потребительной случае (в данном примере используется FlatSpec, но и другие стили тестирования в основном то же самое):

class ExampleSpec extends fixture.FlatSpec { 

    type FixtureParam = DbConnection 

    def withFixture(test: OneArgTest) = { 
    val dbUrl = test.configMap.getRequired("dbUrl") 
    val dbConnection = // use dbUrl 

    try { 
     withFixture(test.toNoArgTest(dbConnection)) 
    } 
    finally dbConnection.close() 
    } 

    "Testing" should "be easy" in { dbConnection => 
    assert(dbConnection.isOpen) 
    } 
+0

Похоже хорошее направление идти в направлении, однако проблема в том, мне нужен объект БД клиента к быть видимым для всех тестов, что означает, что я должен определить его вне любых методов в тесте. Будет ли сделать db-клиент var и присвоить ему исходное значение изначально? Даже если бы это было похоже на уродливое решение. –

+0

@JohnDoe Да, это то, что я сделал бы (кроме использования 'ThreadLocal' для параллельного выполнения теста). –

+0

Я вижу, думаю, я попробую это, спасибо за помощь! Кроме того, вы могли бы уточнить, что вы подразумеваете под "(кроме использования ThreadLocal для параллельного выполнения теста)"? Я как бы новичок в этом тестировании и вообще в scala. –

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