Как ввести значения свойств в тест Спока? - PullRequest
3 голосов
/ 30 июня 2011

При использовании теста Спока я жестко закодировал некоторые свойства в тест спока. Пример - URL JDBC. Я попробовал аннотацию @Value вместе с файлом свойств, но, похоже, это не сработало, поскольку в моем тесте нет стереотипа. Существуют ли другие решения для ввода значений свойств?

@ContextConfiguration(locations = "classpath*:applicationContext-test.xml")
class RepositoryTest extends Specification {

    @Shared sql = Sql.newInstance("jdbc:sqlserver:// - room - for - properties")    

}

Ответы [ 3 ]

2 голосов
/ 27 января 2017

Чтобы использовать PropertySourcesPlaceholderConfigurer, добавьте @Configuration класс:

@Configuration
@PropertySource("classpath:database.properties")
public class DatabaseConfig {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

Ссылка здесь .

А потом в Споке:

@Value('${foo.bar}') //Use single quote.
String fooBar

Причина использования одинарной кавычки здесь .

И вам, вероятно, нужно добавить @ContextConfiguration к вашему классу Спока:

@ContextConfiguration(classes = DatabaseConfig .class)
class Test extends Specification {
    ...
}
1 голос
/ 04 июля 2011

@ Общие свойства не могут быть введены, но что-то вроде этого должно работать (с Spring 3):

@Value("#{databaseProperties.jdbcUrl}")
String jdbcUrl

Sql sql

def setup() {
  if (!sql) {
    sql = new Sql(jdbcUrl)
  }
}

Предполагается, что вы определили "databaseProperties" в файле определения компонента:

<util:properties id="databaseProperties" location="classpath:database.properties" />
0 голосов
/ 01 июля 2011

использовать системные свойства jvm "java -DdbUsername = bbbb"

...