在 Java 中通过不断变化的测试用例进行自动化测试
Automate Testing with changing test cases in Java
我正在尝试对用 Java 编写的程序进行自动化测试。我遇到的问题是需要有一种方法可以 add/remove 更多测试用例而不更改代码。
例如,您有两个字符串,想检查它们是否在字符串列表中。您将字符串传递过来并检查。在 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 程序就会知道如何处理它。
对不起,我不知道如何解释得那么好。希望不要混淆。
创建和读取测试资源以供在 Java 中使用的方法有很多。
您可以在 .txt 文件、xml 格式、逗号分隔格式等中使用纯文本字符串。
这实际上取决于您尝试注入的测试数据的数量和深度。
这里有很多questions/answers可以搜索如何使用资源文件或其他文件读取方法。
这里有一个例子:How should I load files into my Java application?
据我了解你的问题,
您希望为所有用户提供一个通用框架,他们每个人都希望以自己的方式使用它!
我的朋友这是"Keyword driven framework"进来拍照的地方!
更具体地说,正如您所说,您为 "check string in a list" 编写了一个函数,但是如果有人想要 "check the length" 那么您必须再次编辑您的函数!!
您需要做的就是分析您必须支持的不同操作。
比如,检查列表中的字符串、检查字符串的长度、检查列表的大小、检查不在列表中的字符串、将字符串添加到列表等。
所以你不用写一个混合操作的函数!您改为将其模块化,然后还给用户以他们自己的方式使用它!
那么如果你声明了以上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 编写的程序进行自动化测试。我遇到的问题是需要有一种方法可以 add/remove 更多测试用例而不更改代码。
例如,您有两个字符串,想检查它们是否在字符串列表中。您将字符串传递过来并检查。在 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 程序就会知道如何处理它。
对不起,我不知道如何解释得那么好。希望不要混淆。
创建和读取测试资源以供在 Java 中使用的方法有很多。 您可以在 .txt 文件、xml 格式、逗号分隔格式等中使用纯文本字符串。
这实际上取决于您尝试注入的测试数据的数量和深度。
这里有很多questions/answers可以搜索如何使用资源文件或其他文件读取方法。
这里有一个例子:How should I load files into my Java application?
据我了解你的问题,
您希望为所有用户提供一个通用框架,他们每个人都希望以自己的方式使用它!
我的朋友这是"Keyword driven framework"进来拍照的地方!
更具体地说,正如您所说,您为 "check string in a list" 编写了一个函数,但是如果有人想要 "check the length" 那么您必须再次编辑您的函数!!
您需要做的就是分析您必须支持的不同操作。 比如,检查列表中的字符串、检查字符串的长度、检查列表的大小、检查不在列表中的字符串、将字符串添加到列表等。
所以你不用写一个混合操作的函数!您改为将其模块化,然后还给用户以他们自己的方式使用它!
那么如果你声明了以上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 是这样完成的!
希望有用!