Пример модульного теста Grails, показывающий завершено: 0 spock-тестов, 0 - неудачно.

Я новичок в Grails. Я использую версию 2.2.2. Мои тестовые примеры не выполняются, даже если указано, что тесты пройдены. После запуска тестового примера я получаю следующее сообщение.

Разрешение [тестовых] зависимостей ... Разрешение [времени выполнения] зависимостей ... | Компиляция 1 исходных файлов.
| Ошибка log4j: ERROR Отсутствует свойство при настройке log4j: grails | Ошибка log4j: ERROR Отсутствует свойство при настройке log4j: grails | Ошибка log4j: ПРЕДУПРЕЖДЕНИЕ ОБ ОШИБКЕ: Произошло исключение при настройке журналирования log4j: null | Завершено 0 тестов на спок, 0 не удалось за 1409 мс
| Тесты ПРОЙДЕНЫ - просматривать отчеты в 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)
}
}

person Braj Kishore    schedule 23.06.2014    source источник


Ответы (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'
}
person saw303    schedule 23.06.2014
comment
Спасибо @ saw303. Теперь я вижу, что тестовые примеры выполняются, однако он все еще не работает с groovy.lang.MissingPropertyException: нет такого свойства: className для класса: org.junit.runner.Description - person Braj Kishore; 23.06.2014
comment
Я расширил свой ответ. Пожалуйста, просмотрите это - person saw303; 23.06.2014
comment
Я изменил его на kpiLog. Я все еще получаю ту же ошибку. - person Braj Kishore; 23.06.2014
comment
Вы пробежали grails clean? Тогда вы пытались изолировать проблему, используя только простое консольное приложение? Ваша конфигурация ведения журнала может быть частью проблемы. - person saw303; 23.06.2014
comment
Я безуспешно пробовал несколько комбинаций для регистрации. Я все еще получаю ту же ошибку. Не могли бы вы предложить простой лог, который будет выводить все на консоль. Я тоже попробую - person Braj Kishore; 23.06.2014
comment
пожалуйста, найдите конфигурацию журнала выше - person saw303; 23.06.2014
comment
Я также пробовал вести журнал выше. Я запустил grails в чистом виде после изменения конфигурации ведения журнала. Теперь я не получаю сообщение об ошибке, но проблема все еще существует, потому что сообщение, которое я получаю, завершено 0 spock test, 0 не удалось. Это была исходная проблема. - person Braj Kishore; 24.06.2014
comment
создайте новый модульный тест с помощью grails create-unit-test Foo и реализуйте только один простой тест. Позвольте мне знать, что происходит. - person saw303; 25.06.2014
comment
Это то, что я получаю Tests PASSED - просмотр отчетов в D: \ workspace_idea_new \ optapp \ target \ test-reports. Он даже не показывает, сколько тестовых случаев выполнено или запущено - person Braj Kishore; 26.06.2014
comment
См. Тестовый код выше. Тот же код работает нормально, если я создаю новое приложение grails. - person Braj Kishore; 26.06.2014

Наконец-то он заработал. Это было из-за jar msutil в папке lib. Я получил эту информацию от одного из моих друзей, что он несовместим. Я поменял банку, которую он прислал, и все заработало.

Большое спасибо saw303 за терпение в ответ на мои вопросы.

person Braj Kishore    schedule 08.07.2014