Drop Project
O Drop Project é uma ferramenta que valida automaticamente se o código de um certo exercício prático está correto.
Ao longo do curso, existem diversos exercícios práticos que integram com o Drop Project, através de um link que é apresentado junto a cada exercício. O aluno deve resolver o exercício no Intellij e de seguir arrastar o ficheiro respetivo para o Drop Project. De seguida o Drop Project vai correr uma série de testes para verificar se a submissão está correta.
Por exemplo, o programa pode passar apenas alguns dos testes - nesse caso, o aluno deve corrigir e fazer nova submissão. Não há limite de submissões. A nota associada a esse exercício é automaticamente atualizada com base no número de testes que conseguiram passar.
No final da parte 1, nos exercícios práticos, é exemplificada em vídeo a utilização do Drop Project.
Como interpretar os erros apresentados?
Quando a submissão falha alguns testes, é apresentado um relatório de erros que permite perceber porque é que cada teste falhou. Este relatório obedece a um standard chamado JUnit. Se vierem a trabalhar profissionalmente nesta área, é muito provável que usem o JUnit, pelo que saber interpretar os seus resultados será uma mais-valia.
Vejamos um exemplo de um erro apresentado pelo Drop Project na submissão do exercício do conversor de milhas para quilómetros:
FAILURE: TestTeacherConversor.testConversor1
org.junit.ComparisonFailure:
Last 5 lines were:
[OUT]: Introduza milhas(enter)
[OUT]: (enter)
[IN]: 30(enter)
[OUT]: 30 são 48 kms(enter)
[OUT]: (enter)
expected:<30 [milhas ]são 48 kms> but was:<30 []são 48 kms>
at org.junit.Assert.assertEquals(Assert.java:115)
at pt.ulusofona.deisi.Command.validateAgainst(StdinStdoutHelper.java:78)
at pt.ulusofona.deisi.StdinStdoutHelper$1.checkLine(StdinStdoutHelper.java:264)
at pt.ulusofona.deisi.StdinStdoutHelper$1.write(StdinStdoutHelper.java:250)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
at java.io.PrintStream.newLine(PrintStream.java:546)
at java.io.PrintStream.println(PrintStream.java:824)
at MainKt.main(Main.kt:11)
at TestTeacherConversor.testConversor1(TestTeacherConversor.kt:14)
Este erro parece intimidante mas na realidade é muito simples identificar o que aconteceu. A linha mais importante é esta:
expected:<30 [milhas ]são 48 kms> but was:<30 []são 48 kms>
O que o Drop Project nos está a dizer é que ele estava à espera de ver a frase "30 milhas são 48 kms" mas o que o programa produziu foi "30 são 48 kms". Ou seja está a faltar a palavra "milhas".