我正在尝试自动测试用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程序将知道如何处理它。
对不起,我不知道如何解释它。希望它不会混淆。
答案 0 :(得分:2)
据我了解你的问题,
您希望为很多用户提供一个通用框架,每个用户都希望它以自己的方式使用它!
我的朋友这就是"关键字驱动的框架"进来拍照!
更具体地说,你写了一个函数来"检查列表中的字符串"但如果有人想"检查长度"然后你必须再次编辑你的功能!!
您需要做的就是分析您必须支持的不同操作。 比如说,检查列表中的字符串,检查字符串的长度,检查列表的大小,检查不在列表中的字符串,添加字符串到列表等。
所以不要用混合操作编写函数!你把它变成模块化的,然后把它交给用户以自己的方式使用它!
因此,如果您声明上述4个关键字(函数)。他们可以按照他们想要的顺序调用它
e.g。测试用例看起来像:
test1:
check for string in list <string1>
test2:
check length of string <string1>
check size of list
check for string not in list <string1>
您可以为每个功能定义模板,并将信息传递给用户!这样就可以根据需要使用这些模块化的关键字。这就是机器人框架的完成方式!
希望它有用!
答案 1 :(得分:1)
有许多方法可以创建和读取用于Java的测试资源。 您可以使用.txt文件,xml格式,逗号分隔格式等直接文本字符串。
这实际上取决于您尝试注入的测试数据的数量和深度。
这里有很多问题/答案,你可以搜索如何使用资源文件或其他文件读取方法。