【发布时间】:2017-02-25 06:58:29
【问题描述】:
我正在将Testng 断言转换为AssertJ 我正在使用sed 命令。当有带有新行的语句时,我会被绞死,
Exa 1:
assertEquals(person.getAddressLine1(),
"This is long line, so needs to go in second line as per Formatter.........!!!!!!!");
Exa 2:
assertEquals(person.getAddressLine1(),
"This is very long line, so needs to break down in multiple" +
"This is very long line, so needs to break down in multiple" +
"This is very long line, so needs to break down in multiple");
我当前的解决方案:这非常适合单行断言。
sed -i 's/assertEquals([[:blank:]]*\(.\+\),[[:blank:]]*\(["].\+["]\+\))[[:blank:]]*;/Assertions.assertThat(\1).isEqualTo(\2);/g'
注意:我知道,我可以在编辑器 Formatterr 中更改行的最大长度,但不知何故我无法更改它,因为那时我需要执行 Ctrl + Shift + F 再次,这对我来说是不可能的。
更新:下面给出了两个示例的预期输出。
Exa 1:
Assertions.assertThat(person.getAddressLine1()).isEqualTo("This is long line, so needs to go in second line as per Formatter.........!!!!!!!");
Exa 2:
Assertions.assertThat(person.getAddressLine1()).isEqualTo("This is very long line, so needs to break down in multiple" +
"This is very long line, so needs to break down in multiple" +
"This is very long line, so needs to break down in multiple");
【问题讨论】:
-
您是否愿意接受由
sed将多行断言转换为单行语句的解决方案? -
当您在断言中使用逗号和双引号时,任何基于正则表达式的解决方案都会遇到错误,例如
assertEquals("a \"quoted\" value, foo, bar", str); -
@Leon:是的....
-
@anubhava :这是可以接受的,这就是为什么我没有在这里给出这个例子。
-
我愿意接受任何适用于上述场景的解决方案(第二个参数的行数可能会有所不同)。
标签: regex string bash unix sed