Robolectric使用(二)配置相關

Robolectric使用(二)

上篇文章講了Robolectric的簡單使用,在這里會詳細講一下Robolectric的配置相關的知識點


  • Robolectric的一部分行為可以在運行時被配置,使用robolectric.properties文件在包級別配置,或者使用@Config注解在class級別或者method級別配置
  • @Config注解
    可以為單個test class 或者method使用@Config注解做出配置,這個注解在method級別上指定的值將覆蓋class級別的配置
  • 被經常使用的注解配置可以使用基類統一配置
@Config(sdk=JELLYBEAN_MR1,
      manifest="some/build/path/AndroidManifest.xml",
      shadows={ShadowFoo.class, ShadowBar.class})
  public class SandwichTest {
  }
  • robolectric.properties文件
    為包級別的test配置需要在應用合適的包下創建一個文件名為 robolectric.properties的文件。
    通常,這個文件需要放在src/test/resources目錄下的合適的包名目錄下(比如src/test/resources/com/lsp/robolectric.properties)
    下面是例子:
#src/test/resources/com/mycompany/app/robolectric.properties
sdk=18
manifest=some/build/path/AndroidManifest.xml
shadows=my.package.ShadowFoo,my.package.ShadowBar

在robolectric的配置中當class或者method有@Config注解,將會覆蓋properties的配置

  • Global Configuration 全局配置
    如果你希望改變配置的默認值,你需要繼承RobolectricTestRunner 并且重寫buildGlobalConfig方法,然后你可以使用@RunWith注解指定你自定義的test runner

  • Robolectric將會在運行時 試圖通過在manifest文件里指定的application 類來創建一個application對象,如果想要提供一個自定義的實現,需要做出如下設置:

@Config(application = CustomApplication.class)
public class SandwichTest {

    @Config(application = CustomApplicationOverride.class)
    public void getSandwich_shouldReturnHamSandwich() {
    }
}

robolectric允許你自己改變到manifest resource目錄 以及assets目錄的路徑。如果你有一個自定義的build系統,這將是很有用的,你可以指定這些配置如下設置

@Config(resourceDir = "some/build/path/res")
public class SandwichTest {

    @Config(resourceDir = "other/build/path/ham-sandwich/res")
    public void getSandwich_shouldReturnHamSandwich() {
    }
}
  • 配置修飾詞Configure Qualifiers

  • System Properties
    一些額外的選項可以通過全局的設置系統屬性來配置:

  1. robolectric.enabledSdks-逗號隔開的sdklevel或者名字列表是對進程可用的,在運行的時候只測試在list中指定的sdk。默認是所有sdk都是可用的
  2. robolectric.offline-設置為true 關閉jar包的動態獲取
  3. robolectric.dependency.dir-在offline模式的時候,指定一個文件夾來包含運行時依賴
  4. robolectric.dependency.repo.id-為運行時依賴設置maven依賴庫的id(默認是sonatype)
  5. robolectric.dependency.repo.url-設置maven庫url(默認https://oss.sonatype.org/content/groups/public/
  6. rebolectric.logging.enabled-設置為true打開默認logging

當使用gradle的時候,可以為單元測試的所有block配置系統屬性,比如,重寫Maven 庫url和id通過sonatype之外的倉庫去下載運行時依賴

android {
  testOptions {
    unitTests.all {
      systemProperty 'robolectric.dependency.repo.url', 'https://local-mirror/repo'
      systemProperty 'robolectric.dependency.repo.id', 'local'
    }
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,951評論 6 342
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優秀的...
    笨鳥慢飛閱讀 5,605評論 0 4
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風情閱讀 1,726評論 0 3
  • “自尊、自立、自強、自愛、自信”,這“五自”在剛開始進入大學的時候,校團委書記就在全校新生大會上和我們說了。可是明...
    小小紙飛機閱讀 285評論 0 0