【问题标题】:Android Test Project - Reading assets file to test plain java objectAndroid 测试项目 - 读取资产文件以测试纯 java 对象
【发布时间】:2012-02-29 16:43:56
【问题描述】:

我的项目设置

  • 库项目 A 包含这样的 fooJSONParser:

    public class fooJsonParser {
      ...
      // Constructor using the input-stream
      public DPNodeJsonParser(InputStream inputJsonStream) {
        // Constructor
      }
    
      /**
       * Method that has to be executed once the class is instantiated to parse
       */
      public parsedObject parseObj() {
        // Parses and prints the info
      }
    
  • 应用程序项目 B,它使用 库项目 A

问题

现在我创建了一个测试项目tester 来测试App 项目B 并添加一个测试用例来测试fooJsonParser 类。每次有新的 json 数据时,我都会更新 parse 方法并希望使用 tester 项目对其进行测试,并查看解析器是否正确解析,而不是安装、运行应用程序并导航到将使用新的 json 数据。为此,我在 testerassets 文件夹中有一个 json 文件。但我不确定如何读取 json 文件。我认为这与MockContext 有关,但不确定如何使用它,因为documentation 表示所有方法都不起作用。

有人可以建议一个解决方案/提供一个示例来从plain java object test case 读取资产文件吗?

我对 android 测试环境还很陌生。如果有任何不清楚的地方,请告诉我。我可以添加更多信息。

【问题讨论】:

  • 我也有类似的问题。您的资产是在App Project B 的资产文件夹中还是在tester 的资产文件夹中?

标签: android unit-testing junit


【解决方案1】:

假设您有包含 json_sample.txt 的 assets 文件夹,如果我记得,您可以通过以下方式从 POJO 中获取它:

String testFile = "json_sample.txt";
InputStream in = this.getClass().getClassLoader().getResourceAsStream(testFile);

我记得我很久以前在我的一个项目中做过这个,如果你需要添加 assets/ 作为 testFile 的前缀,请尝试一下。

更新:
我刚刚意识到资产文件夹不再自动添加到项目构建路径中,可能是从 r14 开始。我很确定它是以前的(与 res 文件夹相同)。该文件必须在构建路径下,为了使代码工作,您需要手动将资产文件夹添加到项目构建路径中,右键单击您的项目-构建路径-配置构建路径,将资产文件夹添加为构建时的源文件夹小路。或者将您的文件移动到 res 文件夹中。

Android 文件系统受到很大限制,我怀疑是否有其他方法可以从 POJO 读取断言文件。

【讨论】:

    【解决方案2】:

    我通过以下方式解决了这个问题:

    • 按照here 的说明创建了设置
    • 扩展了InstrumentationTestCase 而不是TestCaseInstrumentationTestCase 具有 getInstrument() 方法,通过该方法我可以访问 Instrumentation 的(测试应用项目)上下文。

    【讨论】:

    • 是的,这是我们的正常做法,请查看我的 anwser here 6 个月前。但严格来说,这不是你问的,你问的是如何从 POJO 中做到的,我可能误解了你的问题。
    【解决方案3】:

    Android Gradle Plugin 1.1 版以来,您无需使用Instrumentation 加载文件资源。

    我写了here 如何使用 POJO unit test 案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多