- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在公司担任自动化工程师。最近,我写了一段我的经理绝对不会接受的代码。
我被要求为涉及 GUI 不同部分的测试用例编写一些脚本。我的经理不接受的代码部分是 if/else
语句,用于检查 GUI 中提示的当前语言。
我被指示使用 Sikuli,因此,了解应用程序当前设置的语言非常重要,这样我的脚本才能单击正确的按钮(根据语言而变化)。
我的想法是,代码遍历 if/else
语句,然后指向正确的按钮。示例:if/else
语句确定“ok”按钮当前是 Suomi 翻译,因此它将点击正确的按钮。
这是我的代码示例:
switch (button) {
case "ok":
if (s.exists("imagerepo/language/catalan_ok.png") != null) {
s.click("imagerepo/language/catalan_ok.png");
} else if (s.exists("imagerepo/language/suomi_ok.png") != null) {
s.click("imagerepo/language/suomi_ok.png");
} else if (s.exists("imagerepo/language/italian_ok.png") != null) {
s.click("imagerepo/language/italian_ok.png");
} else if (s.exists("imagerepo/language/portuguese_ok.png") != null) {
s.click("imagerepo/language/portuguese_ok.png");
} else if (s.exists("imagerepo/language/english_ok.png") != null) {
s.click("imagerepo/language/english_ok.png");
} else if (s.exists("imagerepo/language/dutch_ok.png") != null) {
s.click("imagerepo/language/dutch_ok.png");
} else if (s.exists("imagerepo/language/spanish_ok.png") != null) {
s.click("imagerepo/language/spanish_ok.png");
} else if (s.exists("imagerepo/language/french_ok.png") != null) {
s.click("imagerepo/language/french_ok.png");
} else if (s.exists("imagerepo/language/latina_ok.png") != null) {
s.click("imagerepo/language/latina_ok.png");
} else if (s.exists("imagerepo/language/chinese_ok.png") != null) {
s.click("imagerepo/language/chinese_ok.png");
}
break;
...etc..
我对上面的代码唯一的不满是它太丑了。从功能上讲,它完全按照我的意愿行事,100% 的时间。
编辑:我认为拥有一个适应可能变化的按钮的开关比为同一个按钮拥有 10 个开关要好。可以说,与我刚才所说的相反,如果我正在编写脚本,我将始终知道系统将使用哪种语言。
如果这是一个糟糕代码的例子,我可以做些什么来确定我需要按哪种“形式”的按钮?
现在值得注意的是,我正在寻找的答案实际上根本不涉及测试,而是我如何最佳地执行上面的 if/else
block 的功能?
最佳答案
类似于:
String[] languages = {
"catalan_ok.png",
"suomi_ok.png",
//...
}
for (String base : languages) {
String file = String.format("imagerepo/language/%s", base);
if (s.exists(file) != null) {
s.click(file);
break;
}
}
也许?未经测试。
关于java - 如何简化一长串类似的 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770386/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!