Scala 2.9, sbt 1.0 e TDD com scalatest Parte 1
Este é um pequeno post sobre Scala 2.9 e sbt 1.0 com scalatest, o sistema operacional usado para criar esse post foi o Mac OS X, mas pode ser facilmente migrado para Linux.
Para instalar o Scala em seu computador utilize o Typesafe Stack. Simplifica bastante a configuração do ambiente.
Existem várias formas de trabalhar com Scala, particularmente eu gosto do sbt, por causa da sua semelhança com o maven.
Para instalar o sbt, crie uma pasta bin no seu diretório $HOME.
mkdir ~/bin
Baixe o arquivo sbt-launch.jar e coloque no diretório bin que criamos acima. Conforme recomendado evite colocar o arquivo em um diretório mapeado no classpath.
No diretório bin, crie um arquivo chamado sbt.
touch sbt
Adicione as linhas ao arquivo sbt
java -Dfile.encoding=UTF8 -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -jar `dirname $0`/sbt-launch.jar "$@"
Salve o arquivo e modifique a permissão do arquivo.
chmod +x ~/bin/sbt
Ótimo, com o arquivo criado, agora vamos adicionar o diretório bin no PATH do sistema.
Edite o arquivo .profile que está no raiz do diretório $HOME do seu usuário.
vim ~/.profile
Adicione a seguinte linha ao arquivo e salve.
export PATH=:$HOME/bin: $PATH
Pronto, agora vamos criar o nosso primeiro projeto.
Crie um projeto chamado scala-fraction, utilizando os comandos abaixo.
mkdir ~/scala-fraction cd ~/scala-fraction sbt
Ok, se a sua configuração estiver correta o sbt irá definir o diretório scala-fraction como sendo o raiz do seu projeto.
O resultado vai ser algo parecido com isso:
[info] Set current project to default-210113 (in build file:/Users/flavio/scala-fraction/) >
Sem sair do sbt digite os seguintes comandos:
set name := “Scala Fraction” set version := “1.0” set scalaVersion := “2.9.0” libraryDependencies += "org.scalatest" %% "scalatest" % "1.6.1" session save exit
Quando você executa os comandos acima, o sbt cria e salva o arquivo build.sbt, no raiz do diretório scala-fraction, nesse arquivo definimos as informações básicas do projeto(name, version, scalaVersion) e sua dependência(libraryDependencies).
O libraryDependencies utiliza a mesma nomeclatura de depêndencia do maven, sendo assim temos:
libraryDependencies += groupID %% artifactID % revision
No diretório do scala-fraction, crie o diretório src utilizando os seguintes comandos.
mkdir –p src/test/scala mkdir –p src/main/scala
O sbt utiliza uma estrutura semelhante ao maven, então com os comandos acima criamos um diretório para test e um diretório para os arquivos dos projeto.
Crie um arquivo FractionSpec.scala no diretório src/test/scala.
touch src/test/scala/FractionSpec.scala
Execute novamente o sbt e aguarde o sbt carregar a dependência do projeto. Quando o sbt estiver carregado digite ~test, com o este parâmetro o sbt vai monitorar as alterações dos arquivos.
Vamos definir o nosso primeiro test e verificar o funcionamento do sbt. Neste exemplo vamos trabalhar com frações e construir um simples programa para somar e reduzir frações.
- Uma fração deve ter um numerador e um denominador;
- Uma fração pode ser própria, impropria e unitária;
- Uma fração pode ser reduzida;
- Uma fração pode ser somada a outra fração.
Para simplificar o exemplo a classe FractionSpec vai utilizar FlatSpec e ShoudMatches, veja como vai fica a classe utilizando as especificações acima.
Note que no terminal o projeto foi compilado e foi executado o test acima.
[info] FractionSpec: [info] A fraction [info] - should a numerator and denominator (pending) [info] - should proper (pending) [info] - should improper (pending) [info] - should unit (pending) [info] Passed: : Total 4, Failed 0, Errors 0, Passed 0, Skipped 4 [success] Total time: 3 s, completed Aug 22, 2011 1:28:33 PM 6. Waiting for source changes... (press enter to interrupt)
Por enquanto é só….
