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.testConversor1org.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".