我正在尝试自动化用Java编写的程序的测试。我遇到的问题是,需要有一种方法在不更改代码的情况下添加/删除更多的测试用例。
例如,您有两个字符串,并且希望检查它们是否在字符串列表中。你把字符串传过去检查。在Java代码中,我可以生成if语句,并检查这两个字符串是否与给定列表中的某个字符串匹配。然而,如果我想添加更多的字符串来从列表中搜索,我必须返回到程序并添加更多的代码。
也许是个坏例子,但我希望你明白我的意思。当然,可能还有更多的测试用例可能完全不同。如果我想把这个程序交给其他人,他们可能也想添加自己的程序。
我想创建一种带有参数和方法名的模板,以便在代码之外调用。基本上是一个有规则的文件。然后,Java代码将解释如何处理给定的规则。我在读这篇文章:https://blog.codecentric.de/en/2016/01/robot-framework-tutorial-2016-keywords/但并没有真正理解它。
我的目标是编写一些通用的Java代码,这些代码可以解释模板文件并运行其中定义的测试用例。任何帮助都将不胜感激,谢谢!
示例:
模板文件
Details: Checks if String in database
Method: testID
Arguments: Hello
Foobar.java
public class Foobar {
public void testID(String str1)
{
// Expected output will be taken from a database
Assert.assertEquals(str1, expected_output);
}
}
字符串str1
可以取自Arguments下的模板文件。
问题是,如果我现在想测试str1
是否有一定的长度,我就必须返回并添加更多的代码。如果这个项目只适合我和我的团队,那就太好了。然而,当你把它交给另一家不知道如何编码但他们想运行自己的测试的公司或个人时,它就没有那么实用了。这就是为什么我希望,一个不在团队中的人可以添加他们的测试用例,只要他们遵循模板的格式,Java程序就会知道该怎么做。
对不起,我不知道该怎么解释。希望不要混淆。
据我所知,
您希望为大量用户提供一个通用框架,每个用户都希望它以自己的方式使用它!
我的朋友,这就是"关键词驱动框架"的用武之地!
更具体地说,正如你所说,你写了一个函数来"检查列表中的字符串",但如果有人想"检查长度",那么你必须再次编辑你的函数!!
您所需要做的就是分析您必须支持的不同操作。比如,检查列表中的字符串,检查字符串的长度,检查列表的大小,检查不在列表中的串,将字符串添加到列表等。
所以,与其写一个混合操作的函数!您将其模块化,并将其交还给用户以自己的方式使用!
因此,如果您声明以上4个关键字(函数)。他们可以按照他们想要的的顺序来调用它
例如,测试用例看起来像:
test1:
check for string in list <string1>
test2:
check length of string <string1>
check size of list
check for string not in list <string1>
您为每个函数定义模板,并将信息传递给用户!这样就可以随心所欲地使用这些模块化的关键词。这就是robotframework的工作原理!
希望它有用!
有很多方法可以创建和读取Java中使用的测试资源。您可以在.txt文件、xml格式、逗号分隔格式等中使用纯文本字符串。
这将真正取决于您试图注入的测试数据的数量和深度。
这里有许多关于如何使用资源文件或其他文件读取方法的问题/答案,您可以搜索。
这里有一个例子:我应该如何将文件加载到我的Java应用程序中?