Préface
Lorsque nous apprenions Java, des enseignants ou des livres généraux ont écrit qu'il existe huit types de base de Java. Ce sont: octet, int, court, long, flotteur, double, char, booléen. Cependant, lorsque je lisais la Bible Java, "pensant à Java", ce matin, j'ai trouvé que l'auteur mettait vide lors de l'explication du type de données. Il y en a neuf types. J'ai lu sur Baidu et j'ai découvert que certains livres écrivent également neuf types de base de Java.
Il existe de nombreuses méthodes de type vide dans la couche de service Java, telles que Save * et Update *. Ces méthodes sont mises à jour et n'auront pas de valeur de retour. Le test unique ne peut pas être écrit en fonction de la valeur de retour de la méthode, de sorte qu'ils ne peuvent utiliser que des méthodes spéciales;
L'environnement de cette méthode: Mockito, testng
Méthodes testées:
Java
@Override public void updateulename (long duleid, string newrulename, long ucid) {assert.notnull (duleid, "L'ID de règle ne peut pas être nul"); Assert.notnull (newrulename, "le nom de la règle ne peut pas être nul"); Assert.notnull (UCID, "L'UCID de l'opérateur ne peut pas être nul"); String CleanNewRulename = StringUtils.trim (newrulename); if (StringUtils.isblank (CleanNewRulename)) {Throw New illégalArgumentException ("Le nouveau nom de règle ne peut pas être vide"); } // interroger la règle de règle de la règle de la règle = queryruleByid (duleID); if (null == règle) {lancer une nouvelle illégaldataException ("aucune règle trouvée"); } dule.setRuleId (duleID); Rule.SetRulename (CleanNewRulename); Rule.SetUpDateUcid (UCID); Rule.SetUpDateTime (new Date ()); ratuledao.updateselective (règle); }Méthode de test:
Tester la méthode Java par vide de vide
@Test public void TESTUPDATERULENAME () {Long RuleID = 1l; String newrulename = "newrulename"; Long ucid = 123l; List <Rule> règles = new ArrayList <Rule> (); Règle règle = nouvelle règle (); Rule.SetRuleStatus ((byte) dbValuesetting.rule_status_take_effecte); règles.add (règle); // interroge la map d'objet de règle <chaîne, objet> params = new HashMap <String, objet> (); Params.put ("RuleID", RuleID); Mockito.When (ratuedao.QueryrulesByCondition (params)). ThereTreturn (règles); Mockito.doanswer (nouvelle réponse <Bobile> () {Réponse d'objet public (invocationonmock invocation) {// Breakpoint 2: règle règle = (règle) invocation.getarguments () [0]; assert.asserttrue (règne.GetRulename (). }). Quand (ruledao) .UpDaSeSelective (mockito.any (règle.class)); // Breakpoint 1: Exécutez ici la première règle de règles.upDateulename (duleid, newrulename, ucid); }Comme indiqué dans les commentaires, si deux points d'arrêt sont ajoutés, la dernière ligne d'appel sera d'abord exécutée pendant le processus d'exécution. Lors de l'exécution du point de terminaison 1, le talon du point de terminaison 2 sera exécuté. À l'heure actuelle, le paramètre d'entrée d'exécution de la méthode peut être obtenu au point d'arrêt 2, et le paramètre entrant peut être effectué Assert Vérification pour atteindre l'objectif;
La nouvelle réponse est une interface, qui n'a qu'une seule méthode, qui est utilisée pour définir le portail d'exécution proxy pour les appels de méthode.
Implémentation de Doanswer Java
Réponse d'interface publique <T> {/ ** * @param Invocation L'invocation sur la simulation. * * @return la valeur à retourner * * @throws lance-throws le jetable à lancer * / t Réponse (invocationonmock invocation) lance le jetable;} Lorsque le code est exécuté sur " ruleDao.updateSelective(rule); ", un intercepteur appelé pour l'objet simulé sera déclenché. Dans l'intercepteur, un proxy dynamique sera créé. L'invocation du proxy dynamique est la méthode couverte d'une nouvelle réponse;
En utilisant deux méthodes: Interception et proxy, le réglage et l'obtention des paramètres entrants et sortants de la méthode d'objet simulé sont réalisés. De cette façon, les appels de classe d'exécution dans la méthode VOID peuvent être vérifiés;
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera d'une aide à votre étude ou à votre travail. Si vous avez des questions, vous pouvez laisser un message pour communiquer.