I'm currently working on unit tests for a game that I'm making and am running into a weird error with maven that I can't figure out.
I've run mvn clean
and now my tests are failing.
Here is the error I get when I run mvn test -X
:
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[DEBUG] Determined Maven Process ID 15842
[DEBUG] boot classpath: /home/coseto/.m2/repository/org/apache/maven/surefire/surefire-booter/2.22.1/surefire-booter-2.22.1.jar /home/coseto/.m2/repository/org/apache/maven/surefire/surefire-api/2.22.1/surefire-api-2.22.1.jar /home/coseto/.m2/repository/org/apache/maven/surefire/surefire-logger-api/2.22.1/surefire-logger-api-2.22.1.jar /home/coseto/CMPT276/project/project/target/test-classes /home/coseto/CMPT276/project/project/target/classes /home/coseto/.m2/repository/junit/junit/4.11/junit-4.11.jar /home/coseto/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar /home/coseto/.m2/repository/org/openjfx/javafx-controls/16/javafx-controls-16.jar /home/coseto/.m2/repository/org/openjfx/javafx-controls/16/javafx-controls-16-linux.jar /home/coseto/.m2/repository/org/openjfx/javafx-graphics/16/javafx-graphics-16.jar /home/coseto/.m2/repository/org/openjfx/javafx-graphics/16/javafx-graphics-16-linux.jar /home/coseto/.m2/repository/org/openjfx/javafx-base/16/javafx-base-16.jar /home/coseto/.m2/repository/org/openjfx/javafx-base/16/javafx-base-16-linux.jar /home/coseto/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.22.1/surefire-junit4-2.22.1.jar
[DEBUG] boot(compact) classpath: surefire-booter-2.22.1.jar surefire-api-2.22.1.jar surefire-logger-api-2.22.1.jar test-classes classes junit-4.11.jar hamcrest-core-1.3.jar javafx-controls-16.jar javafx-controls-16-linux.jar javafx-graphics-16.jar javafx-graphics-16-linux.jar javafx-base-16.jar javafx-base-16-linux.jar surefire-junit4-2.22.1.jar
[DEBUG] Forking command line: /bin/sh -c cd /home/coseto/CMPT276/project/project && /usr/lib/jvm/java-11-openjdk-amd64/bin/java -jar /home/coseto/CMPT276/project/project/target/surefire/surefirebooter11758842836664561521.jar /home/coseto/CMPT276/project/project/target/surefire 2021-12-02T21-14-55_342-jvmRun1 surefire9176235482268566905tmp surefire_012726690917142737821tmp
[INFO] Running G20.CollisionScoreIntegrationTest
[ERROR] Tests run: 4, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 0.315 s <<< FAILURE! - in G20.CollisionScoreIntegrationTest
[ERROR] collidingWithOptionalReward(G20.CollisionScoreIntegrationTest) Time elapsed: 0.289 s <<< ERROR!
java.lang.IllegalArgumentException: input == null!
at G20.CollisionScoreIntegrationTest.setup(CollisionScoreIntegrationTest.java:24)
[ERROR] collidingWithReward(G20.CollisionScoreIntegrationTest) Time elapsed: 0 s <<< ERROR!
java.lang.IllegalArgumentException: input == null!
at G20.CollisionScoreIntegrationTest.setup(CollisionScoreIntegrationTest.java:24)
[ERROR] collidingWithAllThree(G20.CollisionScoreIntegrationTest) Time elapsed: 0.001 s <<< ERROR!
java.lang.IllegalArgumentException: input == null!
at G20.CollisionScoreIntegrationTest.setup(CollisionScoreIntegrationTest.java:24)
[ERROR] collidingWithPunishment(G20.CollisionScoreIntegrationTest) Time elapsed: 0 s <<< ERROR!
java.lang.IllegalArgumentException: input == null!
at G20.CollisionScoreIntegrationTest.setup(CollisionScoreIntegrationTest.java:24)
[INFO] Running G20.movementListenerTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.089 s - in G20.movementListenerTest
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR] CollisionScoreIntegrationTest.setup:24 » IllegalArgument input == null!
[ERROR] CollisionScoreIntegrationTest.setup:24 » IllegalArgument input == null!
[ERROR] CollisionScoreIntegrationTest.setup:24 » IllegalArgument input == null!
[ERROR] CollisionScoreIntegrationTest.setup:24 » IllegalArgument input == null!
[INFO]
[ERROR] Tests run: 9, Failures: 0, Errors: 4, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.746 s
[INFO] Finished at: 2021-12-02T21:14:56-08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project project: There are test failures.
[ERROR]
[ERROR] Please refer to /home/coseto/CMPT276/project/project/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project project: There are test failures.
Please refer to /home/coseto/CMPT276/project/project/target/surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.
Please refer to /home/coseto/CMPT276/project/project/target/surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
at org.apache.maven.plugin.surefire.SurefireHelper.throwException (SurefireHelper.java:289)
at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution (SurefireHelper.java:161)
at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary (SurefirePlugin.java:364)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked (AbstractSurefireMojo.java:1041)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute (AbstractSurefireMojo.java:857)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Here is my Maven file:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>G20</groupId>
<artifactId>project</artifactId>
<version>1.0-SNAPSHOT</version>
<name>project</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<javafx.version>16</javafx.version>
<javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>G20.Main</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>G20.Main</mainClass>
</configuration>
</plugin>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Here is the code for the Junit test:
package G20;
import org.junit.*;
import G20.Listener;
import java.util.ArrayList;
import static org.junit.Assert.*;
public class CollisionScoreIntegrationTest {
CollisionHandler handler;
Player player;
Exit exit;
ArrayList<Punishment> punishments;
ArrayList<OptionalReward> optional_rewards;
ArrayList<Enemy> enemies;
ArrayList<Reward> rewards;
/**
* To be done before every test. Creates a new player to be tested on for each test
*/
@Before
public void setup(){
player = new Player(0,0);
}
/**
* Tests if the players score is updated by + 10 when it collides with a reward.
*/
@Test
public void collidingWithReward(){
//generating empty arraylist + dummy values for the collision handler's constructor
rewards = new ArrayList<Reward>();
punishments= new ArrayList<Punishment>();
optional_rewards = new ArrayList<OptionalReward>();
enemies = new ArrayList<Enemy>();
exit = new Exit(111,111);
//adding the reward we want to test collision with in the rewards arraylist
rewards.add(new Reward(32,0));
handler = new CollisionHandler(player, enemies, rewards, optional_rewards, punishments, exit);
handler.handleCollisions();
assertEquals(10, player.getScore());
}
/**
* Tests if the players score is updated by -11 when it collides with a reward
*/
@Test
public void collidingWithPunishment(){
//generating empty arraylist + dummy values for the collision handler's constructor
rewards = new ArrayList<Reward>();
punishments= new ArrayList<Punishment>();
optional_rewards = new ArrayList<OptionalReward>();
enemies = new ArrayList<Enemy>();
exit = new Exit(111,111);
//adding the punishment we want to test collision with in the punishments arraylist
punishments.add(new Punishment(32,0));
handler = new CollisionHandler(player, enemies, rewards, optional_rewards, punishments, exit);
handler.handleCollisions();
assertEquals(-11, player.getScore());
}
/**
* Tests if the players score is updated by +25 when it collides with a optional reward
*/
@Test
public void collidingWithOptionalReward(){
//generating empty arraylist + dummy values for the collision handler's constructor
rewards = new ArrayList<Reward>();
punishments= new ArrayList<Punishment>();
optional_rewards = new ArrayList<OptionalReward>();
enemies = new ArrayList<Enemy>();
exit = new Exit(111,111);
//adding the optional reward we want to test collision with in the optional rewards arraylist
optional_rewards.add(new OptionalReward(32,0));
//setting the collision to on because collision defaults to off for optional rewards
optional_rewards.get(0).collision_on = true;
handler = new CollisionHandler(player, enemies, rewards, optional_rewards, punishments, exit);
handler.handleCollisions();
assertEquals(25, player.getScore());
}
/**
* Tests if the players score is updated by +(25+10-11) when it collides with all 3 of the above entities
*/
@Test
public void collidingWithAllThree(){
//generating empty arraylist + dummy values for the collision handler's constructor
rewards = new ArrayList<Reward>();
punishments= new ArrayList<Punishment>();
optional_rewards = new ArrayList<OptionalReward>();
enemies = new ArrayList<Enemy>();
exit = new Exit(111,111);
//adding all the score modifying entities that are being testing to their respective ArrayList
optional_rewards.add(new OptionalReward(32,0));
rewards.add(new Reward(-32, 0));
punishments.add(new Punishment(0, 32));
//setting the collision to on because collision defaults to off for optional rewards
optional_rewards.get(0).collision_on = true;
handler = new CollisionHandler(player, enemies, rewards, optional_rewards, punishments, exit);
handler.handleCollisions();
assertEquals(24, player.getScore());
}
}
And here is the code where I am getting the error:
package G20;
import java.util.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
/**
* The class for the Player
*/
public class Player extends AnimateEntity{
/**
* Constructor calls super constructor, sets sprites
* @param x_pos
* @param y_pos
* @param sprites
*/
public Player(int x_pos, int y_pos){
super(x_pos, y_pos);
//populating the sprite array list
sprites = new ArrayList<BufferedImage>();
try{
sprites.add(ImageIO.read(getClass().getResourceAsStream("Sprites/player_1.png")));
} catch(IOException e){
e.printStackTrace();
}
try{
sprites.add(ImageIO.read(getClass().getResourceAsStream("Sprites/player_2.png")));
} catch(IOException e){
e.printStackTrace();
}
setSprite(sprites.get(0));
speed = 4;
}
}
I'm pretty sure it has something to do with the maven file but I am not sure what it is. Maybe something with the image reading library I am using? Any help would be greatly appreciated.