在 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 是这样完成的!

希望有用!