Тестовый блок Grails, показывающий: 0 тест спока завершен, 0 не пройден
Я новичок в Grails. Я использую версию 2.2.2. Мои тестовые случаи не выполняются, даже если они говорят, что тестовые случаи пройдены. После запуска контрольного примера я получаю следующее сообщение.
Разрешение [test] зависимостей... Разрешение [runtime] зависимостей... | Компиляция 1 исходных файлов.
| Ошибка log4j: ОШИБКА Свойство отсутствует при настройке log4j: grails | Ошибка log4j: ОШИБКА Свойство отсутствует при настройке log4j: grails | Ошибка log4j: ПРЕДУПРЕЖДЕНИЕ ОШИБКИ: возникла исключительная ситуация при настройке log4j logging: null | Завершено 0 испытаний спока, 0 не пройдено за 1409 мс
| PASSED Tests - просмотреть отчеты в D:\workspace_idea\optapp\target\test-reports
@TestFor(KpiLog)
@TestMixin(DomainClassUnitTestMixin)
@Mock(KpiLog)
class KpiLogSpec extends Specification {
void "savelog"() {
prinln "*********"
when:
def kpiLog = new KpiLog(scenarioId: 1, kpiId: 2, deltaKpi: 5)
kpiLog.save(flush: true)
then:
KpiLog.list()!= null
}
void testSaveFacebookUser(){
//given
def kpiLog = new KpiLog(scenarioId: 1, kpiId: 2, deltaKpi: 5)
//adminRole.addToPermissions("*:*")
kpiLog.save()
}
}
Может кто-нибудь, пожалуйста, скажите мне, что я делаю не так?
Я запускаю тестовый случай как grails test-app -unit KpiLogSpec
Вот раздел log4j из файла Config.groovy
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
//appenders {
// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
//}
debug 'grails.app'
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
appenders {
console name:'S', layout:pattern(conversionPattern: '%d %-5p %c - %m%n')
//rollingFile name: 'R', file:'/usr/local/jd/logs/optimizer.log',maxFileSize: '5000000KB'
rollingFile name: 'R', file:grails.config.logPath, maxFileSize: '5000000KB'
environments {
production {
appender new AWSSNSAppender(
name:'SNS' ,
topicName:config.optimizer.snsAppender.topicName,
topicSubject:config.optimizer.snsAppender.topicSubject,
awsAccessKey:config.optimizer.aws.accessKey,
awsSecretKey:config.optimizer.aws.secretKey,
threshold:Level.toLevel(optimizer.snsAppender.threshold, Level.ERROR)
)
}
}
}
info R: ['NotifierService', 'aggDataStackLog','constraintGroupLog','pageFilterLog','alertDebugLog','dacCacLog','tpFlagExportImportLog','timelog','calculationProgress','dictionaryLog','loginServiceLog', 'calculateScenarioLog','connectionLog','dataLabelServiceLog','cross-section-service','qe-basic-executor-service','qe-plan-enumerator-impl-service','qe-basic-planenum-ssservice','ct-dimension-hierarchy-service','cbRuleLog'],additivity:true
error SNS: ['aggDataStackLog','constraintGroupLog','pageFilterLog','alertDebugLog','dacCacLog','tpFlagExportImportLog','timelog','calculationProgress','dictionaryLog','loginServiceLog', 'calculateScenarioLog','connectionLog','dataLabelServiceLog','cross-section-service','qe-basic-executor-service','qe-plan-enumerator-impl-service','qe-basic-planenum-ssservice','ct-dimension-hierarchy-service','cbRuleLog'],additivity:true
//info SNS: ['aggDataStackLog','calculateScenarioLog']
/*root {
error 'R'
additivity = true
} */
}
Вот тестовый код, который я запустил.
@TestMixin(GrailsUnitTestMixin)
class FooSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
println "****************testing in real "
assertTrue(1==1)
}
}
2 ответа
Запустите тестовый пример, как это
grails test-app unit: KpiLog
Важно то, что вы используете unit:
вместо -unit
а также KpiLog
вместо KpiLogSpec
Тогда не определяйте переменную log
,
def log = new KpiLog(scenarioId: 1, kpiId: 2, deltaKpi: 5)
Он зарезервирован для входа в классы Grails (контроллеры, службы,...). Переименуйте переменную из log
в kpiLog
def kpiLog = new KpiLog(scenarioId: 1, kpiId: 2, deltaKpi: 5)
Простая конфигурация журнала может быть
log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d [%t] %-5p %c - %m%n')
}
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
}
Наконец, это работает. Это было из-за jar msutil в папке lib. Я получил эту информацию от одного из моих друзей, что она имеет некоторую несовместимость. Я изменил банку, которую он послал, и все стало работать.
Большое спасибо saw303 за терпение с моими вопросами.