Android测试取决于库项目的测试类

时间:2015-12-01 12:29:48

标签: android testing android-studio gradle android-gradle

所以我的项目有两个模块:

  
      
  • 应用
  •   
  • 文库
  •   

在应用程序的@Configuration public class SwaggerConfiguration { @Bean @DependsOn("jaxRsServer") //org.apache.cxf.endpoint.Server bean public ServletContextInitializer initializer() { return new ServletContextInitializer() { @Override public void onStartup(ServletContext servletContext) throws ServletException { BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner(); Swagger swagger = scanner.getSwagger(); servletContext.setAttribute("swagger", swagger); } }; } @Bean public Feature swaggerFeature() { XSwagger2Feature feature = new XSwagger2Feature(); return feature; } @Bean public FilterRegistrationBean swaggerApiFilter() { ApiOriginFilter filter = new ApiOriginFilter(); FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFilter(filter); registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); return registrationBean; } public static class XSwagger2Feature extends Swagger2Feature { @Override protected void addSwaggerResource(Server server) { super.addSwaggerResource(server); BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner(); Swagger swagger = scanner.getSwagger(); swagger.securityDefinition("api_key", new ApiKeyAuthDefinition("api_key", In.HEADER)); swagger.securityDefinition("petstore_auth", new OAuth2Definition() .implicit("http://petstore.swagger.io/api/oauth/dialog") .scope("read:pets", "read your pets") .scope("write:pets", "modify pets in your account")); } } } 目录中,我有一些类依赖于库中addroidTest目录中的类。

结构是:

addroidTest

他们在Android Studio中进行了精细编译,但是当我运行测试时,我得到了:

  

错误:(6,32)错误:找不到符号类XXXX错误:执行   任务失败[...]

     
    

编译失败;有关详细信息,请参阅编译器错误输出。

  
     

[...]

     

任务执行失败> ':应用程序:compileProductionDebugAndroidTestJavaWithJavac'

当gradle执行任务':app:compileProductionDebugAndroidTestJavaWithJavac'它找不到位于库的测试目录中的类。

我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

test来源集未添加到输出的aar,因此当app查找library' s androidTest时不存在。您可以将共享类放在主lib代码中并从app引用它,但我不认为您可以依赖于另一个模块的测试类。

答案 1 :(得分:-3)

我和Junit一起工作,如你所说,它位于libs文件夹中。对于您的测试类,您可以尝试以下步骤:

1-在androidTest文件夹中,确保将测试类放在如下路径中:androidTest - > java - > com.examples.bla(与项目相同) - >测试类。

2-转到运行/调试配置 - >默认值 - > Android测试(如果没有,则添加它),然后选择" All in Module"对于测试选项,还要确保在配置窗口的底部添加了Gradle-aware Make。