Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JUnit5] incompréhension expression assertThrows()

Sujet résolu
    18 janvier 2018 à 16:56:19

    Bonjour tout le monde, et merci de jeter un œil a mon sujet :)

    Je vous sollicite aujourd'hui car j'aime bien savoir ce que je fait quand je fais du code, et que je suis en train de voir les test unitaire en JUnit5 (sous ide éclipse 4.7.2) et que, testant le bon envoie des exceptions d'une fonction, j'en suis arrivé a faire ce code:

    @Test
    void test4() {
    	assertThrows(IllegalArgumentException.class, () -> MyFrameWork.factorielle(21));
    }

    mon incompréhension vient de l'expression : " ()  -> ".

    si je pouvais avoir un ou des noms a recherché sur google pour comprendre la chose, je vous en serais reconnaissant (et encore plus si on prend le temps de m'expliquer ce qu'il en est concrètement).

    Un grand merci d'avance!

    Cordialement,

    Noscifer

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2018 à 17:25:03

      Bonjour,

      Ca s'appelle une expression lambda et c'est une des nouveautés de Java 8.

      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2018 à 17:59:18

        Salut. Tu en es arrivé à écrire ce code ou tu l'as recopié? :lol:

        En plus de ce qu'à dit brubru777 je vais te donner un exemple. Dans ce cas si cette expression permet de remplacer une classe anonyme à une seule méthode abstraite, exemple avec l'interface ActionListener de swing

        button.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            {
                System.exit(0);
            };
        }); 
        
        //Equivalent
        
        button.addActionListener((e) -> System.exit(0));
        //ou
        button.addActionListener(e -> System.exit(0));

        Tu suis?

        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2018 à 19:06:34

          Regarde ici, Partie 1 - Les lambdas

          https://openclassrooms.com/courses/2515616?status=waiting-for-publication

          • Partager sur Facebook
          • Partager sur Twitter
            19 janvier 2018 à 11:39:11

            brubru777 a écrit:

            Bonjour,

            Ca s'appelle une expression lambda et c'est une des nouveautés de Java 8.


            merci beaucoup!

            kulturman a écrit:

            Salut. Tu en es arrivé à écrire ce code ou tu l'as recopié? :lol:

            En plus de ce qu'à dit brubru777 je vais te donner un exemple. Dans ce cas si cette expression permet de remplacer une classe anonyme à une seule méthode abstraite, exemple avec l'interface ActionListener de swing

            Tu suis?


            honnêtement je l'ai recopié tout en cherchant a comprendre et en l'adaptant a mon code (ce qui fait que j'en ai compris 75%, mon "problème" initial était de vérifier mes exceptions lancé sans passer par un try fail catch), mais comme le site que j'ai consulté n'expliquait pas la partie qui me posait problème, il m'a fallu pas mal de recherche google pour finalement oser poser la question.

            je pense avoir saisi la chose, en gros on s’épargne de coder "l'ensemble" d'une classe (anonyme) en mettant directement les instruction qui nous intéressent, la jvm étant alors capable de comprendre où on veut en venir, la méthode (assertThrow dans mon cas) lance la "classe" qui va donc effectué les instructions qu'on aura précisé (lancé la méthode factorielle() dans mon cas), ce qui explique le type Execution demandé par assertThrow...

            je vais pousser plus loin et éplucher davantage le net pour bien assimiler ca, ya quelques tests qui m'attendent également... :)

            merci encore en tout cas! :D

            brubru777 a écrit:

            Regarde ici, Partie 1 - Les lambdas

            https://openclassrooms.com/courses/2515616?status=waiting-for-publication

            merci pour le lien! :D

            question: si je met le sujet en résolue ça lock le sujet? (mon objectif étant d'attendre la réponse de kulturman afin de savoir si je suis sur la bonne voie ou non).

            Cordialement,

            Noscifer

            • Partager sur Facebook
            • Partager sur Twitter
              19 janvier 2018 à 13:45:32

              Bonjour.

              Si tu comprends les classes anonymes :
              N'hésite pas à étudier les lambdas : il s'agit d'une grosse évolution syntaxique apportée par Java 8.
              (L'API Collector est la 2nd évolution majeure de Java 8 (et surement de l'histoire du langage))

              Noscifer a écrit:

              question: si je met le sujet en résolue ça lock le sujet? (mon objectif étant d'attendre la réponse de kulturman afin de savoir si je suis sur la bonne voie ou non).

              Si l'on regarde les autres sujets du forum dans cet état "Résolu", alors on remarque que l'on peut toujours y répondre.
              • Partager sur Facebook
              • Partager sur Twitter
              Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                22 janvier 2018 à 11:13:54

                Noscifer a écrit:


                question: si je met le sujet en résolue ça lock le sujet? (mon objectif étant d'attendre la réponse de kulturman afin de savoir si je suis sur la bonne voie ou non).

                J'imagine que tu as eu le tmps de lire le cours et que tu comprends maintenant! Bonne suite.

                • Partager sur Facebook
                • Partager sur Twitter

                [JUnit5] incompréhension expression assertThrows()

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown