Модульный тест Grails 2.0 с использованием @TestFor и @Mixin

Обычно я использую Mixins в тестовом коде, чтобы совместно использовать служебные методы в тестах. У меня есть тест, который я написал, который имеет @TestFor и @Mixin. Поведение, которое я вижу, заключается в том, что когда у меня есть аннотация @TestFor, тест не видит мой код @Mixin и выдает мне MissingMethodException при выполнении. Когда я удаляю @TestFor, все работает нормально. Ниже приведен упрощенный пример того, что я пытаюсь сделать.

@Mixin(TagLibTestUtils)
@TestFor(ErrorMessageTagLib)
class ErrorMessageTagLibTests {

    @Test
    void stuff() {
        something()
    }
}

class TagLibTestUtils {

    def something() {
        println ">>> HERE"
    }
}

Итак, мой вопрос: не работают ли аннотации @Mixin и @TestFor вместе? Или я что-то не так здесь делаю?


person Jarred Olson    schedule 31.01.2012    source источник


Ответы (1)


Предполагая, что вы используете Grails 2.0, вы должны использовать @TestMixin вместо @Mixin.

Если вы посмотрите на источник TestFor, вы увидите этот комментарий:

/**
 * Used to indicate the class under test. Triggers the @TestMixin AST transform for the given artefact type.
 *
 * @author Graeme Rocher
 * @since 2.0
 */
person seth.miller    schedule 02.02.2012
comment
Это работает, спасибо! Любое понимание того, почему было внесено изменение, чтобы принудительно использовать TestMixin? - person Jarred Olson; 03.02.2012
comment
Боюсь, я не знаю. Возможно, им нужна была другая RetentionPolicy. чем то, что установлено для @Mixin. Возможно, они просто хотели, чтобы это было частью пакета grails.test, а не groovy.lang. - person seth.miller; 03.02.2012
comment
Хорошо, спасибо. Я награжу вас завтра, как только это позволит мне сделать это :) - person Jarred Olson; 03.02.2012