Je recherche un cadre Java BDD avec possibilité de réutiliser des tests d'unité et d'intégration. P>
En d'autres termes
1. Je veux pouvoir changer en changeant quand, et en gardant donné fort> et alors fort> intact, modifiez le type du test, par exemple en simple service de repos: P >
Donc, par exemple, donné strong> et puis strong> se comporte de la même manière, pour l'intégration et les tests d'unité, et simplement changeur Je ne veux pas réinventer la roue p>
3 Réponses :
Junit? p>
Il est tout à fait possible d'avoir une classe de base abstraite avec un @Before code> méthode (c'est-à-dire "" "") et une méthode courante avec des assertions (c'est-à-dire "). P>
Disclamer: Je suis l'auteur de jgiven.
jgiven fournit exactement cela. C'est un cadre BDD pour Java où des scénarios sont construits par des classes de théâtre. Pour votre exemple, vous avez besoin de quatre classes de stade: édifice, quandinternalservice, lorsqueexternalservice, et howoutput. Ensuite, vous pouvez écrire deux tests: P>
Essai d'unité pour le service interne: strong> p> Test d'intégration pour le Service externe: strong> p> Les classes de scène puis ressemblent à ceci: strong> p> public class GivenInput extends Stage<GivenInput> {
@ProvidedScenarioState
InputPojo input;
public GivenInput some_input() {
input = new InputPojo();
return self();
}
}
public class WhenInternalService extends Stage<WhenInternalService> {
@ExpectedScenarioState
InputPojo input;
@ProvidedScenarioState
OutputPojo output;
public WhenInternalService the_internal_service_is_called() {
output = new InternalService().invoke(input);
return self();
}
}
public class WhenExternalService extends Stage<WhenExternalService> {
@ExpectedScenarioState
InputPojo input;
@ProvidedScenarioState
OutputPojo output;
public WhenExternalService the_external_service_is_called() {
ExternalInput externalInput = transformToExternal(input);
ExternalOutput externalOutput = new ExternalService().invoke(external);
output = transformToInternal(externalOutput);
return self();
}
}
public class ThenOutput extends Stage<ThenOutput> {
@ExpectedScenarioState
OutputPojo output;
public ThenOutput the_result_is_correct() {
assertThat(output).isNotNull();
return self();
}
}
J'utilise jgiven personnellement récemment et je suis un fan instantané - plus de "sandwichs de concombre" pour moi :-)
Je suis heureux d'entendre que :-)
Si vous utilisez Java 8, vous devriez consulter Ceci A> PROJET GITUB. Utilisation de cela, vous pourriez obtenir ce que vous voulez sans les tracas de la création de cours. Cela est dû à l'utilisation de génériques + Java 8 lambdas. P> Voici quelques échantillons de test de base: p>
Il y a une bonne discussion sur les frameworks BDD en Java sur Stackoverflow ici: Stackoverflow.com/questions/1068785/...