8
votes

Utiliser "virgule" ou "tuyau" au sein des junitparams

J'essaie d'utiliser des junitparams afin de paramétrer mes tests. Mais mon problème principal est que les paramètres soient des chaînes avec des caractères spéciaux, un tilde ou un tuyau. xxx

avec tilde, je n'ai aucun problème. Mais avec pipe, j'ai une exception: xxx

Le tuyau, comme la virgule, est utilisée comme séparateur pour les paramètres.

y a-t-il de moyen Pour moi de définir un séparateur différent? Ou est-ce une limitation des junitparams?


3 commentaires

Vous pouvez travailler en utilisant Syntaxe


Je voudrais également essayer d'échapper au tuyau avec "\\", voir cet échantillon


J'ai essayé cette syntaxe, ne fonctionne toujours pas. Maintenant, j'utilise paramétré à la place des junitparams. Cela fonctionne, mais l'argument est pour toute la junitclass (alors j'ai dû créer une nouvelle classe). Les travaux. Mais parce que mes paramètres sont difficiles à lire (pleins de | et ~ et d'autres caractères spéciaux), je préférerais ne pas ajouter beaucoup de caractère d'échappement dans mes ensembles d'entrée. Mais oui, ça marche.


3 Réponses :


1
votes

Vous pouvez vérifier Zohhak . Il est similaire aux paramètres junit mais vous donne beaucoup plus de flexibilité autour des paramètres d'analyse. On dirait que cela peut contribuer de manière significative à traiter des paramètres «difficiles à lire». Exemples de la DOCS:

@TestWith(value="7 | 19, 23", separator="[\\|,]")
public void mixedSeparators(int i, int j, int k) {
    assertThat(i).isEqualTo(7);
    assertThat(j).isEqualTo(19);
    assertThat(k).isEqualTo(23);
}

@TestWith(value=" 7 = 7 > 5 => true", separator="=>")
public void multiCharSeparator(String string, boolean bool) {
    assertThat(string).isEqualTo("7 = 7 > 5");
    assertThat(bool).isTrue();
}


0 commentaires

4
votes

Je n'ai pas trouvé de possibilité de configurer les caractères de séparation, mais ces caractères n'ont pas besoin d'être échappés si vous fournissez vos données dans un objet [] [] [] code>.

Considérons les suivants Exemple: P>

public static Object[][] provideParameters() {
   return new Object[][] {
        new Object[] {"A,B|C"}
    };
}


0 commentaires

5
votes

Vous pouvez en effet échapper au tuyau avec double back-backslashes: xxx


0 commentaires