我目前正在开发一个使用libgdx和java的游戏。我想在我的游戏的一些功能上运行一些JUnit测试,但是我在加载我的资产时遇到了困难。我试图实现Mockito,这样我就可以进行无头JUnit测试,看看这是否有助于解决问题,但这并没有帮助。这里是我试图加载资产的测试类(资产正在第17行加载)
import com.kroy.game.FireEngine;
import com.kroy.game.Fortress;
import com.kroy.game.Tile;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@RunWith(GdxTestRunner.class)
public class FireEngineTests {
Tile testTile = new Tile();
FireEngine testFireEngine = new FireEngine(100, 10, 10, testTile, 10, 100, "fireEngineSprite.png");
Class ReflectionClass = FireEngine.class;
@Test
public void testRefillAmount() {
testFireEngine.refillAmount(50);
assertEquals(50, testFireEngine.getWaterAmount());
testFireEngine.refillAmount(5000);
assertEquals(100, testFireEngine.getWaterAmount());
}
@Test
public void testCanShoot() {
}
@Test
public void testDeath() {
testFireEngine.setHealth(0);
assertTrue(testFireEngine.isDisabled());
}
@Test
public void testTakeDamage() {
try {
testFireEngine.setHealth(100);
Method takeDamageReflection = ReflectionClass.getDeclaredMethod("takeDamage");
takeDamageReflection.setAccessible(true);
takeDamageReflection.invoke(50, takeDamageReflection);
assertEquals(50, testFireEngine.getHealth());
takeDamageReflection.invoke(5000, takeDamageReflection);
assertEquals(0, testFireEngine.getHealth());
} catch (NoSuchMethodException e) {
} catch (InvocationTargetException e) {
} catch (IllegalAccessException e) {
}
}
@Test
public void testTransferTo() {
Tile newLocation = new Tile(2,2);
try {
Method transferToReflection = ReflectionClass.getDeclaredMethod("transferTo");
transferToReflection.setAccessible(true);
transferToReflection.invoke(newLocation, transferToReflection);
assertEquals(testTile.getInhabitant(),null);
assertEquals(newLocation.getInhabitant(), testFireEngine);
} catch (NoSuchMethodException e) {
} catch (InvocationTargetException e) {
} catch (IllegalAccessException e) {
}
}
@Test
public void testShootTarget() {
Fortress testFortress = new Fortress(1000, 10,2,testTile, "fortress1", "lavaTile.png");
testFireEngine.shootTarget(testFortress);
assertEquals(testFortress.getHealth(), (testFortress.getMaxHealth() - testFireEngine.getDamage()));
assertEquals(99, testFireEngine.getWaterAmount());
}
}
以下是我尝试运行的每个测试的错误消息:
com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: /Users/michaelShepherd/Documents/University Work/Year 2/SEPR/Assessment 3/Septagon3/tests/assets/fireEngineSprite.png
搜索到的文件肯定位于指定的位置,我还将资产文件夹设置为该模块的资源根目录,但仍然没有加载该文件。
有什么建议吗?
我不知道你是如何在FireEngine类中处理纹理的,但是你可能需要像在游戏中一样通过AssetManager加载和访问纹理。
我试图使用Junit5为特定的服务类创建单元/集成测试,以避免整个项目过载。 测试类: 错误: 2019-04-03 14:56:06.146警告732---[main]O.S.W.C.S.GenericWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependency
很抱歉打扰你,我知道这个问题已经有人问过了,但我无法解决。我已经开始使用libgdx,并决定有一本书作为教程--“学习LigbGDX游戏开发”。这一切都很好,直到第4章,我不能装载资产到峡谷邦尼。包。我不知道发生了什么事。在../canyonbunny-android/assets/images中创建了两个文件-一个是png,另一个是atlas。如果你能帮我一把,我将非常欢迎。 控制台 影像包装.
问题内容: 我的问题的答案可能非常简单和愚蠢,但到目前为止我自己还找不到。使用Play Framework,emberjs和FluentLenium,我编写了一个非常简单的功能测试,但不能使其在 IntelliJ IDEA 13下工作* 。由于某些原因,当我使用IntelliJ运行测试时, 找不到 位于 public /和app / 文件夹中的所有 资产 。 * 这是我的代码: 这是我在Intel
我的Junit测试类是这样配置的,以允许autowired。 我的如下所示 在测试上下文中,src/test/resources/application.properties只是空的。 H2应该是一个内存数据库,不能在两个启动之间保存数据!为什么我会收到这些错误? 有什么想法吗?谢谢
我用JPA Hibernate开发了一个SpringBoot应用程序,它运行得非常好。现在我不得不从测试开始,我真的不知道如何解决这个错误: 我的PlayersRepository是: 我见过这个答案,但没有找到解决方法。我应该更改或添加什么?以前从没用过这种东西,请好心点。
我使用的是spring-boot-1.5。在单元测试期间,是否有方法在src/test/resources中加载application.properties?我知道如何使用integration test加载它,我们可以使用@SpringBootTest或@ContextConfiguration,但我想在单元测试期间使用Application.Properties。 任何指点或帮助都将是非常值得