【问题标题】:running tests in libgdx using intellij使用 intellij 在 libgdx 中运行测试
【发布时间】:2015-01-11 12:15:02
【问题描述】:

我的团队和我自己正在使用 libgdx 创建一个应用程序,我们将一些数据保存在一个 json 文件中。没什么特别的。该文件保存在“android/assets/data/cards.json”中,因此 Gdx.files.internal 命令可以在 android(自然)和运行桌面版本时(更改工作目录后)轻松找到它。 问题是,在 intellij 中运行测试时,工作目录更改不适用,因此找不到它。我试图将所述文件的副本复制到核心项目中。所以我有这两种读取文件的方法:

public static final String cardsJsonFilePath = "data/cards.json"; /**** at a later method ****/ byte[] encoded = (Gdx.files.internal(cardsJsonFilePath)).readBytes(); byte[] encoded = Files.readAllBytes(Paths.get(cardsJsonFilePath));

第一个分配适用于除测试(从 GDX.files.internal 接收 null)之外的所有配置,第二个分配只要我将数据文件夹的副本保留在核心目录中,而不是在 android 上(因为文件和路径在android中似乎不存在)。 此外,后者是一个相当糟糕的解决方案,因为它迫使我保留文件的更新副本以进行测试。

TL ;博士 我有一个资产,我希望我的测试可以在 intellij 中访问,并且我希望它可以与 libgdx.files.internal 或其他一些 android 友好的解决方案一起使用。

提前致谢!

【问题讨论】:

  • 您可以在 IntelliJ 运行配置的设置中为您的测试指定工作目录。这没有帮助吗?
  • 实际上我还没有为我的测试定义它,只是为了我的应用程序运行。或者我会马上做。但事实证明我在诊断自己的问题时错了。

标签: android intellij-idea libgdx


【解决方案1】:

所以,我找到了我自己问题的答案,所以如果你有类似的问题,我希望这会有所帮助。 当我怀疑空指针异常是由于找不到文件时,我错了。 异常的原因是 Gdx 类在未在适当的应用程序上下文中运行时未正确初始化(例如,当用于测试时)。所以 null 不是内部方法的结果,而是 Gdx.files 本身为 null。

简而言之,您不能只在需要时使用 libgdx 库方法,它是一个框架,而不是库。

我们使用的解决方法是: byte[] encoded; if (Gdx.files == null) encoded = Files.readAllBytes(Paths.get(cardsJsonFilePath)); else encoded = (Gdx.files.internal(cardsJsonFilePath)).readBytes(); return new String(encoded); 所以andoird应用程序不会崩溃,因为它从不使用代码的文件和路径部分(我有点惊讶它可以编译,但是嗯。不会与一件好事争论,对吧?)并且测试仍然可以使用它代替空的 Gdx.files 字段。所以每个人都赢了!

玩得开心构建(和测试!)您的游戏! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多