Setup:
Environment:
Language: Java
Build Type: Custom - Ubuntu
Packages: apt-get install -y junit4; apt-get install -y default-jdk
Run Script: None
Helper Files: Upload your JUnit Test script as a helper file
Tests:
Open file mode, and click "Add File". Create a new Test File
In your Test File, add the following two commands:
# Compile all java files in the directory, with junit in the classpath
javac -cp /usr/share/java/junit4-4.12.jar *.java
# Run the Junit test with the runner
java -cp /usr/share/java/junit4-4.12.jar:. org.junit.runner.JUnitCore <TestName>
Settings
Turn on "dump test outputs to
_tests.txt
. This stores the JUnit outputs into a file in each student's submissionsIf you want students to see the output of all tests when they submit, you'll also want to turn on "Expose outputs to students on submit".
Result
File Mode view of running Two JUnit test scripts
The test results from the code console
Advanced
Packages
If you have nested directories, or student files are part of a package, you'll have to edit these commands. For example, if your students are submitting all files with the package a02
, your commands would look like this:
# Create a temporary directory
mkdir a02
# Compile the classes to the a02 directory
classpathjavac -cp /usr/share/java/junit4-4.12.jar *.java -d /a02
# Add a02 to the classpath, and run the test
java -cp /usr/share/java/junit4-4.12.jar:.:a02 org.junit.runner.JUnitCore a02.<TestName>
JUnit5
If you require using junit5 with the codePost autograder, you may follow these instructions to install it on your instance:
Set up an Ubuntu container with default-jdk (same as in the junit4 instructions)
Download the latest junit platform jar here: https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.6.0/junit-platform-console-standalone-1.6.0.jar
Upload it as a helper file. It might take a bit of time, as it's a big file.
Replace the file mode test file commands with the following two lines:
javac -d . -cp /junit-platform-console-standalone-1.6.0.jar <filename>.java
java -jar /junit-platform-console-standalone-1.6.0.jar --class-path . --scan-class-path
These instructions compile the java file to the root directory with the junit5 jar and then run it. This method is using the command line to run junit5 files, which you can learn more about here.