【问题标题】:Automate Testing with changing test cases in Java使用 Java 中不断变化的测试用例自动化测试
【发布时间】:2016-09-20 17:56:38
【问题描述】:

我正在尝试对用 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 可以从参数下的模板文件中获取。

问题在于,如果我现在想测试str1 是否有一定长度,我将不得不返回并添加更多代码。如果该程序只适合我和我的团队,那就太好了。但是,当您将它提供给不知道如何编码但他们想运行自己的测试的另一家公司或个人时,它就不会那么实用了。这就是为什么我希望,一个不在团队中的人可以添加他们的测试用例,因为他们遵循模板的格式,Java 程序会知道如何处理它。

对不起,我不知道如何解释得那么好。希望不要混淆。

【问题讨论】:

  • 如果您向我们展示项目的结构,那么我们可以提供帮助。
  • 在 OP 中添加了更多内容。

标签: java automation robotframework


【解决方案1】:

据我了解你的问题,

您希望为大量用户提供一个通用框架,他们每个人都希望它以自己的方式使用它!

我的朋友,这就是“关键字驱动框架”的用武之地!

更具体地说,正如您所说,您编写了一个“检查列表中的字符串”的函数,但如果有人想“检查长度”,那么您必须再次编辑您的函数!

您需要做的就是分析您必须支持的不同操作。 比如说,检查列表中的字符串、检查字符串的长度、检查列表的大小、检查不在列表中的字符串、将字符串添加到列表等。

因此,您无需编写包含多种操作的函数!你把它变成模块化的,然后把它还给用户以他们自己的方式使用它!

所以如果你声明了上面的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的完成方式!

希望有用!

【讨论】:

  • 谢谢,这就是我要找的。​​span>
  • 很高兴它有帮助! :)
【解决方案2】:

有很多方法可以创建和读取用于 Java 的测试资源。 您可以在 .txt 文件、xml 格式、逗号分隔格式等中使用纯文本字符串。

这实际上取决于您尝试注入的测试数据的数量和深度。

这里有很多关于如何使用资源文件或其他文件读取方法的问题/答案,您可以搜索。

这里是一个例子:How should I load files into my Java application?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多