Android 在appcenter中,失败的单元测试仅指定函数名和行号
编辑,可能在appcenter论坛上发布这篇文章更好(我现在已经完成了): 简言之,我正在开发的一个应用程序是在appcenter中构建的,并设置为运行单元测试,但我遇到的问题是,我无法找出是什么导致它们失败(它们不会在本地失败) 我不能在这里分享我遇到问题的代码,但为了说明我遇到的问题,假设我定义了以下kotlin函数:Android 在appcenter中,失败的单元测试仅指定函数名和行号,android,unit-testing,kotlin,junit,visual-studio-app-center,Android,Unit Testing,Kotlin,Junit,Visual Studio App Center,编辑,可能在appcenter论坛上发布这篇文章更好(我现在已经完成了): 简言之,我正在开发的一个应用程序是在appcenter中构建的,并设置为运行单元测试,但我遇到的问题是,我无法找出是什么导致它们失败(它们不会在本地失败) 我不能在这里分享我遇到问题的代码,但为了说明我遇到的问题,假设我定义了以下kotlin函数: fun returnFooString() { return "Foo " } 并编写了以下测试: @Test fun test_return
fun returnFooString() {
return "Foo "
}
并编写了以下测试:
@Test
fun test_returnFooString_returns_foo() {
val foo = returnFooString()
assertThat("${foo} is equal to "Foo", "Foo", foo)
}
我想看到的是:
java.lang.AssertionError: Foo is equal to Foo
Expected: "Foo"
but: was "Foo "
Expected :Foo
Actual :Foo
com.mypackage.name.MyTest > test_returnFooString_returns_foo FAILED
java.lang.Exception at MyTest.kt:4
但是,我在appcenter日志中看到的唯一失败测试是:
com.mypackage.name.MyTest > test_returnFooString_returns_foo FAILED
java.lang.AssertionError at MyTest.kt:4
所以我不知道刚才发生了什么。我对android开发还是个初学者,虽然我搜索过谷歌,但还没有成功地找到相关的东西。是否可以在build.gradle中放置一些设置以不抑制断言消息,或者需要在appcenter中指定一些环境变量,或者其他一些设置以查看预期和接收到的内容
现在,我正在考虑是否可以在测试/代码中抛出异常来阐明这个问题,但必须有更好的方法(尤其是因为构建大约需要10分钟)
编辑:抛出异常不起作用,如果我抛出一个异常并注销我感兴趣的每个变量,我得到的结果如下:
java.lang.AssertionError: Foo is equal to Foo
Expected: "Foo"
but: was "Foo "
Expected :Foo
Actual :Foo
com.mypackage.name.MyTest > test_returnFooString_returns_foo FAILED
java.lang.Exception at MyTest.kt:4
在这一点上,我似乎不得不放弃测试,或者做一些疯狂的事情,比如写256个测试来找出字符串在位置0处的第一个字符,然后10分钟后再写256个字符来找出第二个…我发现可以通过以下方式启用日志记录:
testOptions {
unitTests.all {
testLogging {
showStandardStreams true
}
}
}