使用代码生成来执行通用测试

时间:2014-11-23 09:57:58

标签: java testing code-generation

我想我有一个有趣的问题,PERHAPS已经有了答案,这对我来说仍然是一个秘密,所以我希望得到一些来自expers的帮助。 :)

所以这就是事情:

我为测试/验证团队工作以测试我们的Java API,基本上我的工作是遵循测试计划并编写测试代码。写了两个多月后,我发现代码非常相似。例如:

要测试函数可以返回预期的结果或正确抛出异常,我们可能需要写几个.java来运行。

1.java设置服务器连接,连接客户端并发送请求,使用正确值启动变量并将其传递给函数A,捕获答案并进行分析

2.java设置服务器连接,连接客户端并发送请求,使用正确的值启动所有变量但是一个具有错误值并将它们传递给函数A,捕获答案并进行分析

3.java设置服务器连接,连接客户端并发送请求,使用正确的值启动所有变量但使用错误值 2 并将它们传递给函数A,捕获答案并进行分析

所以你看到三个java测试文件,其中大部分是相同或相似的,甚至复制/粘贴使工作枯燥,可能是错误的。

我想知道我是否可以定义对应不同行为的测试代码,然后对于每个测试java文件,我定义一个包含行为的文本,然后是一个负责加载文本文件并组装最终测试的母类java文件根据文件文件?

像这样:
文字档案:
1)设置服务器
2)连接客户端
3)发送请求
4)用正确的值启动变量
5)使用正确的值启动变量,但是具有不良值的变量 6)启动具有正确值的变量,但两个具有错误值 7)抓住结果并进行分析

Mother.java
1)加载文本文件
2)创建一个son.java
3)找到对应Text文件的代码并将它们写入son.java

然后编码器在IDE上打开son.java来检查语法,或导入或任何冲突然后运行它。

我的想法是否可以实现?有类似的东西吗?

任何信息都将受到赞赏,感谢提前数百万!

1 个答案:

答案 0 :(得分:0)

老实说,这听起来不是代码生成的好用例。您应该实现一个更通用的测试实用程序,它将所需的输入作为其数据,并根据此数据执行通用测试代码,而不是为每个测试用例生成一个类。

从你写的内容来看,这就像是一个JUnit测试的简单基类:

abstract class AbstractServerDependantTest {

  protected Server server;

  protected Client client;

  @Before
  public void setUp() {
    server = new Server();
    server.start();
    client = new Client();
    client.connectTo(server);
  }

  @After
  public void tearDpwm() {
    client.disconnect();
    server.shutDown();
  }
}

现在,您可以编写三个继承自此AbstractServerDependantTest的测试类,而无需复制粘贴代码。