Pular para o conteúdo principal

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