小编Kee*_*ren的帖子

Android单元测试不适用于Android库项目

我们正在尝试为我们的项目引入新的Android单元测试支持.

对于库项目,在使用gradlew运行时无法找到src/main/java类.

从Android Studio运行测试按预期工作.在应用程序项目中使用gradle运行测试按预期工作.在库项目中使用gradle运行测试失败.

我在github上创建了一个示例项目,它在一个小项目中重现了这个问题.

使用gradle插件定义apply plugin: 'com.android.application'它可以正常工作,插件定义apply plugin: 'com.android.library'会发生错误.

错误是:

home/user/path/AndroidJvmJunitTestSpike/common/src/test/java/squins/com/common/SomeClassTest.java:11: error: cannot find symbol
    assertEquals(2, new SomeClass().sum(1, 1));
                        ^                    
  symbol:   class SomeClass                      
  location: class SomeClassTest                  
  /home/user/path/AndroidJvmJunitTestSpike/common/src/test/java/squins/com/common/SomeClassTest.java:16: error: cannot find symbol
    new SomeClass().referenceDrawableFromR();
        ^                                    
  symbol:   class SomeClass                      
  location: class SomeClassTest                  
  2 errors                                         
  :common:compileDebugUnitTestJava FAILED 
Run Code Online (Sandbox Code Playgroud)

这应该有用吗?我错过了什么吗?

android jvm gradle android-testing android-studio

9
推荐指数
1
解决办法
777
查看次数

在Scala中调用带有和不带括号的无参数函数以不同的方式执行

我有以下Currying函数声明:

def logString(count: Int)(fun:() => Unit) {
  for (n <- 1 to count) { fun }
}
Run Code Online (Sandbox Code Playgroud)

我用这种方式调用这个函数:

logString(3) { () => print("I") }
Run Code Online (Sandbox Code Playgroud)

结果没什么 - 只是没有输出.

然后我只需在"fun"函数调用后添加括号,在Currying函数声明体内:

def logString(count: Int)(fun:() => Unit) {
  for (n <- 1 to count) { fun() }
}
Run Code Online (Sandbox Code Playgroud)

结果成为预期的结果:

III

这是一些Scala错误,还是在学习Scala时我错过了一些规则?

我知道当你声明这样的函数时有规则:def myFun = 1我们不能用括号调用它 - 编译失败. 但是在调用带括号和不带括号的函数时有不同的结果似乎更像是一个bug.

我是对的还是我想念Scala?

scala currying

4
推荐指数
2
解决办法
752
查看次数