我们有一个简单的Web服务来处理有关我们数据的查询。我想制作一组断言/案例扩展,为测试响应的各个方面提供高级方法。例如,我可以编写assertResultCountMinimum(int)。该方法将负责构建查询,执行查询以及解压缩响应以验证数据。我也喜欢
我想确保在脑子里有关于如何解决这个问题的正确想法。
首先使用正确的设置和拆卸方法创建我自己的测试用例类。为了我们的目的,MyTestCase。然后提供一系列使用新的断言方法扩展Assert的类。这些类的最终用户将扩展MyTestCase并使用我创建的断言。这是我认为我在jWebUnit中看到的模式。
我觉得我正在混合和匹配junit 3和4概念。我很想拥有junit 4概念。但我似乎无法在我脑海中排列正确的方法来构建它。此外,属于Junit的Assert类的断言方法都是静态的。我的一些断言需要重新查询Web服务。这让我觉得我应该只是将断言作为MytestCase中的一系列辅助函数提供。后来完成了工作,但感觉不对。
任何见解,沉思,澄清请求,非常感谢。
跟进编辑: 正如珍妮在下面所说的那样,我正在创建一个包含所有断言的超级课程。设置/拆卸方法。实际上我的断言实际上是辅助函数,它包含了基本的junit 4断言,我将其导入到我的超类中。我的任何测试都会扩展这个超类。我正在考虑的一个警告是使超类抽象,因为不应该有超类的任何实例。
答案 0 :(得分:1)
果渣 我在JUnit 4中使用了两个模式。对于“实用程序类型”断言,我创建了一个静态类。例如ReflectionAssertions。然后我使用静态导入在我的JUnit 4测试中使用这些断言。
对于仅在一个类中使用的本地类型断言,我在JUnit 4测试类本身中使它们成为常规方法。例如assertCallingMyBusinessMethodWithNullBlowsUp()。这些没有太多的重用价值。
我不考虑这种混合概念,因为后面的组在我的测试之外是不可重用的。如果我有可重用的断言进行webservice调用(因此需要状态),我会创建一个不扩展TestCase并使用它的超类。我的超类将使用state和@Before方法进行设置。因此,它是测试的一部分。