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)
for (TypeInIterable type : someIterable) {
}
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’imparfaite pour des raisons de limite technique d’IntelliJ, elles sauvent un minimum de temps, multiplié par le nombre de tests. Malheureusement, il n’y a pas non plus d’import export uniquement pour les live template, il faut donc se taper la configuration d’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 tout le contexte Java, avec reformatage et simplification du nom qualifié.
-
Description : Creates a field with the
@Mockannotation -
Abbréviation :
am -
Template text :
@org.mockito.Mock private $TYPE$ $MOCK_FIELD$ -
Les variables du templates sont :
Name Expression Default value Skip if defined TYPE
variableOfType("Object")
MOCK_FIELD
suggestVariableName()
-
Description : Creates a field with the
@Spyannotation -
Abbréviation :
as -
Template text :
@org.mockito.Spy private $TYPE$ $MOCK_FIELD$ -
Les variables du templates sont :
Name Expression Default value Skip if defined TYPE
variableOfType("Object")
MOCK_FIELD
suggestVariableName()
-
Description : Creates a field with the
@InjectMocksannotation -
Abbréviation :
aim -
Template text:
@org.mockito.InjectMocks private $TYPE$ $MOCK_FIELD$ -
Les variables du templates sont :
Name Expression Default value Skip if defined TYPE
variableOfType("Object")
MOCK_FIELD
suggestVariableName()
-
Description : Add
@RunWith(MockitoJUnitRunner.class) -
Abbréviation :
rwm -
Template text :
@org.junit.runner.RunWith(org.mockito.runners.MockitoJUnitRunner.class)
-
Description : BDD Stub mock with
given(…).willReturn(…)style -
Abbréviation :
gw -
Template text :
given($MOCK$).willReturn($ARGS$)$END$ -
Les variables du templates sont :
Name Expression Default value Skip if defined TYPE
variableOfType("Object")
ARGS
-
Description : BDD Stub spy/mock with
willReturn(…).given(…)style -
Abbréviation :
wg -
Template text :
org.mockito.BDDMockito.willReturn($RETURNED$).given($MOCK$).$CALL$ $END$ -
Les variables du templates sont :
Name Expression Default value Skip if defined RETURNED
complete()
MOCK
variableOfType("Object")
CALL
complete()
-
Description : Inserts a
verify(…)statement -
Abbréviation :
verif -
Template text :
org.mockito.Mockito.verify($MOCK$).$CALL$ -
Les variables du templates sont :
Name Expression Default value Skip if defined RETURNED
complete()
MOCK
variableOfType("Object")
CALL
complete()
-
Description : Inserts
Mockito.inOrder(mocks)followed byinOrder.verify(…)statements -
Abbréviation :
ioverif -
Template text :
org.mockito.InOrder $inOrderVar$ = org.mockito.Mockito.inOrder($MOCKS$); $IN_ORDER_VAR$.verify($MOCK$).$CALL$; -
Les variables du templates sont :
Name Expression Default value Skip if defined IN_ORDER_VAR
suggestVariableName()
MOCKS
variableOfType("Object")
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).