我目前正在为我正在制作的一款游戏进行单元测试,但在maven身上遇到了一个奇怪的错误,我无法理解。
我已经运行了mvn清洁
,现在我的测试失败了。
以下是我在运行mvn测试-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
这是我的Maven文件:
<?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>
这是JUnit测试的代码:
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());
}
}
下面是我得到错误的代码:
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;
}
}
我很确定它与maven文件有关,但我不确定它是什么。也许是我正在使用的图像阅读库?任何帮助都将不胜感激。
您遇到的问题是,您的测试无法实例化播放器(测试类的第24行)。在尝试时,它将无法找到sprite资源,如果它的基类AnimateEntity正在做额外的工作,则可能会出现其他失败。
理想情况下,您应该在测试用例中使用模拟对象。这样一来,他们就不依赖于可能可用或不可用的资源。
如果绝对需要执行测试所需的资源,则需要配置maven将其复制到目标文件夹,以便测试可以访问它们。
此链接提供有关如何设置项目以使用目标目录中的资源的信息。
在JUnit测试用例中找不到资源文件
LiquiBase.Exception.SetupException:文件:/src/main/LiquiBase/changes/000-initial-schema.xml不存在 我的pom.xml插件配置如下: 我的Liquibase.properties文件是: 为什么Liquibase找不到那个文件?即使我将文件名更改为:000-initial-schematest.xml,错误也是:
其中我指定了一个远程maven存储库: 在这个回购中,我部署了一个工件--实际上它是一个gradle插件。 现在我尝试使用下面的build.gradle文件构建另一个需要使用这个插件/工件的项目: 即使我有上面的settings.xml文件指向远程maven存储库,Gradle也找不到my-gradle-plugin。 如果我在build.gradle文件中指定存储库,它就会起作用: 根据本职位:
我试图从__consumer_offsets主题中使用,因为这似乎是检索关于消费者的kafka度量(如消息滞后等)的最简单的方法。理想的方法是从jmx访问它,但希望先尝试一下,返回的消息似乎是加密的或不可读的。尝试添加stringDeserializer属性。有没有人对如何纠正这一点有什么建议?这里的提法也是重复的 重复的consumer_offset 没有帮助,因为它没有引用我的问题,即在Jav
问题内容: 我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。 //加密 //加载/写入图片 问题答案: 目前尚不清楚以下哪个触发您的错误。这个 将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。 这个 将从类所在的jar文件中的目录中读取。请
问题内容: 我正在从teamtreehouse.com制作一个非常基本的React应用程序,并且不断遇到 “ TypeError:无法读取未定义的属性’onPlayerScoreChange’” 即使我正确绑定了我的功能(我认为) 是组件中的一种方法,当用户单击“ +”或“-”按钮以更改玩家得分时执行。 如果有人可以解释什么地方出了错,那将非常有帮助,因为我认为我是在曾祖父母的构造函数中进行设置的
问题内容: 我正在尝试从无头CMS(Sanity.io)返回一些数据,但是我的React一直遇到错误。我已遵循此示例,但是现在出现错误 我的密码 关于我在做什么错的任何想法吗? 问题答案: 渲染组件时,可以将country定义为未定义或为null。确保它在初始渲染时是数组: 或者, 您可以将地图用于这样的国家/地区: 这样可以确保仅在有国家/地区时才运行地图。