我正在尝试使用JunitParams来参数化我的测试.但我的主要问题是参数是带有特殊字符,波形符或管道的字符串.
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
@RunWith(JUnitParamsRunner.class)
public class TheClassTest {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
@Parameters({"AA~BBB"})
public void shouldTestThemethod(String value) throws Exception {
exception.expect(TheException.class);
TheClass.theMethod(value);
// Throw an exception if value like "A|B" or "A~B",
// ie if value contain a ~ or a |
}
}
Run Code Online (Sandbox Code Playgroud)
随着代字号,我没有问题.但是有了管道,我有一个例外:
java.lang.IllegalArgumentException: wrong number of arguments
Run Code Online (Sandbox Code Playgroud)
管道(以逗号形式)用作参数的分隔符.
我有什么方法可以设置不同的分隔符吗?或者这是JunitParams的限制?
自上次更新(Android Studio?或 Gradle?)以来,我无法从测试类中的 prod 导入代码。
几个月前,测试运行没有任何问题。我可以在命令行中使用 gradle 或使用 AndroidStudio 测试运行程序来启动测试。而且它工作得很好:当代码正常时它会通过,当有错误时它会失败。
但自动完成功能不起作用,类、方法......都是红色的。我无法单击对象来导航到声明......等等。
AndroidStudio 自动快速修复是:“add dependency on module xxx”,在 gradle 文件中添加一行:
implementation project(path: ':app')
我在 gradle 6.1.1 或 7.2.1 的几个项目上遇到同样的问题
AndroidStudio 版本为:Chipmunk,2021.2.1 补丁 1,构建于 2022 年 5 月 18 日
单元测试,位于 app/src/test/java/com/apackage/ASimpleTest.kt
package com.apackage
import org.junit.Test
import kotlin.test.assertEquals
class ASimpleTest {
@Test
fun aTest(){
val plop = AClass()
assertEquals(1, plop.aMethod())
}
}
Run Code Online (Sandbox Code Playgroud)
app/src/main/java/com/apackage/AClass.kt 中的类:
package com.apackage
class AClass {
fun aMethod() = 1
}
Run Code Online (Sandbox Code Playgroud)
我在与测试相同的文件夹中调用方法没有问题。问题是 test/main 文件夹调用 src/main
我知道在正则表达式中,\s可以匹配all whitepsaces (space, tabs ...),可以匹配\d任何数字,等等。
是否有相同的快捷方式,以匹配所有不同的引号: ' " “ ” ‘ ’ „ ” « »?
我可以编写自己的正则表达式,但是我可能会错过其他语言中的一些引号,因此我希望有一种通用的方式来匹配所有引号。
但是,是否可以将它们视为不同的字符,从而不可能?