Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Universitélang scala tools

287 visualizaciones

Publicado el

Présentation de SBT et librairies de test

Publicado en: Software
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Universitélang scala tools

  1. 1. Université des languages Scala tools Fabrice Sznajderman
  2. 2. Plan • SBT • Librairies de test • (Framework web)
  3. 3. SBT
  4. 4. Historique Manuel Script Ant Maven Gradle SBT Automatisation Portabilité Standardisation Extensibilité Interactivité Automatisation Portabilité Standardisation Extensibilité
  5. 5. SBT Simple Build Tool• Gérer les dépendances • Compiler • Publier des artefacts • Exécuter des tests
  6. 6. Fonctionnalités clefs • Shell • Continuous <Task> • Exécution des tâches en parallèle • Compilation incrémentale • Exécution des tests intelligente • Extension simplifiée
  7. 7. Concepts clefs • Task[T] : • Unité de traitement • Les tasks sont exécutées à la demande • Exécutées une fois par run SBT se base sur 2 concepts simple : Tasks et Settings On va pouvoir créer des dépendances entre les tâches • Setting[T] : • Propriété de configuration • Les settings sont évaluées uniquement au chargement du projet
  8. 8. Définition d’une task
  9. 9. Définition d’un setting
  10. 10. Définition d’une task avec paramètre
  11. 11. Accès à la valeur d’une task ou setting la méthode value() permet de lire le résultat (task) ou valeur (setting)
  12. 12. Dépendance entre tâches Pour créer une dépendance entre 2 tâches, il faut que l’une accède au résultat de l’autre : otherTask oneTask
  13. 13. Dépendance entre tâches SBT est capable d’exécuter des tâches en parallèle quand cela est possible : otherTask oneTask thirdTask
  14. 14. Shell : Inspect La commande inspect avec le paramètre tree permet de voir l’arbre de dépendances d’une tâche : > inspect tree otherTask [info] sbtprojectdemo/*:otherTask = Task[Int] [info] +-sbtprojectdemo/*:oneTask = Task[Int]
  15. 15. Shell : Inspect La commande inspect avec le paramètre uses permet de voir la liste des tâches utilisant cette tâches > inspect uses oneTask [info] [info] sbtprojectdemo/*:otherTask
  16. 16. Shell : show La commande show affiche la valeur d’un setting ou le résultat d’une task > show baseDirectory [info] /Users/fsznajderman/Dev/projects/sbtDemo > show oneTask [info] 2 [success] Total time: 0 s, completed 11 janv. 2016 13:02:00
  17. 17. Descripteur de build • build.sbt (ou build.scala historique) • Descripteur écrit avec [un DSL] Scala • Principe de convention over configuration • Projet mono module : descripteur non obligatoire • projet multi module : Un seul fichier à la racine du projet
  18. 18. Définition des versions Possibilité de définir la version • du compilateur scala • de SBT directement dans le fichier build.sbt sbt.version=0.13.7 scalaVersion := 2.11.7
  19. 19. Structure d’un projet poc myProject /
  20. 20. Structure d’un projet d’entreprise
  21. 21. Structure d’un projet multi-module
  22. 22. Structure d’un projet multi-module • Un seul descripteur build.sbt à la racine du projet • Toute la configuration est contenue dedans • Possibilité de factoriser les settings communs
  23. 23. Shell : interaction avec sous module en particulier Il est possible d’interagir avec un sous module à partir du shell. Il faut utiliser la syntaxe suivante : > repository/compile > service/test >show commons/ScalaVersion
  24. 24. Gestion des dépendances • Gestion des dépendances avec Apache Ivy • Déclaration dans le fichier build.sbt • Format pour la déclaration d’une dépendance : libraryDependencies += groupID % artifactID % revision
  25. 25. Gestion des dépendances • Possibilité de gérer manuellement ses dépendances. • Ce sont des unmanaged dependencies. • Elles doivent être placées dans le répertoire lib (par défaut)
  26. 26. Gestion des dépendances • Il est possible de gérer plus finement les versions des dépendances avec SBT. • SBT va rechercher la librairie adaptée à la version de compilateur Scala définie dans le build.sbt • Cette fonctionnalité s'applique uniquement aux librairies construite avec SBT libraryDependencies += groupID %% artifactID % revision
  27. 27. Classes utilitaires • IO : Manipulation du File System • Process : Execution de process externe • Stream : Accès sur le système de log
  28. 28. Plugins • IDEs • Test • Code coverage • Static code analysis • packaging • Releases • Deployment integration • Android & iOs • Monitoring integration • Web and front-end development • Documentation • Library dependency • Utility and system • Database • Code generator • Game development • OSGi http://www.scala-sbt.org/0.13/docs/Community-Plugins.html
  29. 29. Hands-on! Démo
  30. 30. Librairies de test ScalaTest Spec2 ScalaCheck
  31. 31. ScalaTest • Approche similaire à celle de JUnit • Utilisation principalement d'assertions • Ouvert sur de nombreux outils du marché comme : • Mockito, • Junit, • TestNG
  32. 32. ScalaTest • Propose plusieurs styles pour rédiger les TUs. Chaque approche répond à un besoin particulier. • FunSuite : Proche du style xUnit • FlatSpec : Introduction à BDD • FunSpec : Concept tiré de Ruby's RSpec tool • http://www.scalatest.org/user_guide/ selecting_a_style
  33. 33. ScalaTest : FunSuite
  34. 34. ScalaTest : FlatSpec
  35. 35. Scala Spec2 • Basé sur l'approche Behavior Driven Development • Les tests décrivent le fonctionnement attendu des composants testés littéralement • Propose un DSL riche
  36. 36. Scala Spec2
  37. 37. ScalaCheck • Basé sur l’approche Property Based Testing • Inspirée de la librairie Haskell : QuickCheck • Générateur de données aléatoire • Pas de dépendance autre que le runtime Scala • Utilisation standalone ou avec Spec2 ou ScalaTest
  38. 38. ScalaCheck
  39. 39. ScalaCheck
  40. 40. Hands-on! A vous de jouer!

×