Quelques Live Template IntelliJ pour Mockito

Hello, j’en avais un peu marre d’écrire régulièrement voire répétitivement dans mes tests les constructions mockito.

Pour ça je me suis créé dans mon IDE favori, IntelliJ, ce qu’on appelle des Live Template. Ces templates permettent à partir d’une abréviation d’insérer des fragments de code. Ainsi par exemple :

Taper iter dans votre éditeur puis de faire Ctrl+J (sous OSX) va développer cette abréviation dans le bout de code ci-dessous (suivant le contexte bien entendu)

Taper sur Ctrl+J (sous OSX) vous permet de lister les abréviations disponible dans le contexte courant.

Les Live Template pour Mockito

Bien qu’imparafaite pour des raisons de limite technique d’IntelliJ, elles sauvent un minimum de temps, multiplié par le nombre de test. Malheureusement il n’y a pas non plus d’import export uniquement pour les live template, il faut donc se taper la configuration de intellij à la main. Cela dit il est possible de contourner partiellement ce problème avec la sauvegarde de la configuration personnelle sur les serveurs intellij, ou encore d’exporter la configuration pour les live templates, les file templates, et encore autre chose.

J’ai défini toutes ces annotations dans un nouveau groupe ‘test’, et j’ai activé pour toutes le contexte Java, avec reformatage et simplification du nom qualifié.

  1. Description : Creates a field with the @Mock annotation
    Abbréviation : ‘am’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    TYPE variableOfType(“Object”)
    MOCK_FIELD suggestVariableName()
  2. Description : Creates a field with the @Spy annotation
    Abbréviation : ‘as’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    TYPE variableOfType(“Object”)
    MOCK_FIELD suggestVariableName()
  3. Description : Creates a field with the @InjectMocks annotation
    Abbréviation : ‘aim’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    TYPE variableOfType(“Object”)
    MOCK_FIELD suggestVariableName()
  4. Description : Add @RunWith(MockitoJUnitRunner.class)
    Abbréviation : ‘rwm’
    Template text :
  5. Description : BDD Stub mock with given(…).willReturn(…) style
    Abbréviation : ‘gw’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    MOCK variableOfType(“Object”)
    ARGS
  6. Description : BDD Stub spy/mock with willReturn(…).given(…) style
    Abbréviation : ‘wg’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    RETURNED complete()
    MOCK variableOfType(“Object”)
    CALL complete()
  7. Description : Inserts a verify(…) statement
    Abbréviation :
    ‘verif’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    MOCK variableOfType(“Object”)
    CALL complete()
  8. Description : Inserts Mockito.inOrder(mocks) followed by inOrder.verify(…) statement
    Abbréviation : ‘ioverif’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    IN_ORDER_VAR suggestVariableName()
    MOCKS variableOfType(“Object”)
     MOCK variableOfType(“Object”)
     CALL complete()
  9. Description :Inserts a verify(…) statement
    Abbréviation :
    ‘verif’
    Template text :

    Les variables du templates sont :

    Name Expression Default value Skip if defined
    IN_ORDER_VAR variableOfType(“org.mockito.InOrder”)
    MOCK variableOfType(“Object”)
    CALL complete()

Voilà donc les templates que je me suis créé pour IntelliJ, il manque certainement des cas d’utilisation, mais je trouvais plus judicieux de mettre ces cas là au moins. Pour nos amis Eclipse oou Netbeans, il y a des fonctionnalités comparables plus ou moins évoluées (de mémoire le système d’Eclipse est plutôt pas mal).

Références

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">