Java
Résumé
Ce template permet d'écrire rapidement de petits exercice Java.
-
Inclusion:
extends = /template/java.pl -
Dépendance:
@ /utils/sandboxio.py@ /grader/java.py [grader.py](Documentation)@ /builder/before.py [builder.py](Documentation)form =@ /form/text_editor.html(Documentation)
-
Clés utilisées:
editor, form, before, taboo, stdout_tests, junit, classname
Définition
form =@ /form/text_editor.html
@ /grader/java.py [grader.py]
@ /builder/before.py [builder.py]
@ /utils/sandboxio.py
before==
editor["code"] = (
"public class %s {\n"
" public static void main(String[] args) {\n"
" \n"
" }\n"
"}"
) % classname
==
editor.language = java
editor.id = answer
classname = Main
Utilisation
Ce template se sert donc du grader java pour permettre d'écrire des exercices pour ce langage.
Il définit un stub Main grâce à before, la classe associée
à ce main étant automatiquement nommée à partir de la clé classname (Main par défaut).
Le code par défaut peut toujours être modifié en redéfinissant la clé editor.code
et vidant before:
classname = Point
before=
editor.code==
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
==
Pour faire un test JUnit5, il n'est nécessaire que d'importer ce template et d'ajouter
un titre (title), un énoncé (text), et une classe JUnit5 (junit).
Pour faire un test Stdout, il n'est nécessaire que d'importer ce template et d'ajouter
un titre (title), un énoncé (text), et une liste de tests (stdout_tests).
Exemple
JUnit5
extends = /template/java.pl
title = Junit
text = Create the methods 'getX()' and 'getY()' for the class Point.
classname=Point
junit==
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.Assertions;
@DisplayName("Point Test")
class PointTest {
@Test
@DisplayName("Get X")
void testGetX() {
var p = new Point(2, 3);
Assertions.assertEquals(p.getX(), 2);
}
@Test
@DisplayName("Get Y")
void testGetY() {
var p = new Point(2, 3);
Assertions.assertEquals(p.getY(), 3);
}
}
==
Stdout
extends = /template/java.pl
title = Stdout Tests
text ==
Write a main printing on stdout:
* `Hello` if not argument was provided.
* `Hello [arg1]` if one argument was provided.
* `Hello [arg1] and [arg2] ... and [argn]` if n argument was provided.
==
stdout_tests==
"No argument" Hello
James "Hello James" James
"2 arguments" "Hello Jhon and James" Jhon James
!"One argument with space" "Hello Jhon Doe" "Jhon Doe"
==