我是故意在谈论系统测试。我们确实有一套相当详尽的单元测试,其中一些使用了模拟,而这些测试不会去任何地方。系统测试应该是对单元测试的补充,因此,模拟不是一种选择。
如果我将@beforeall
替换为一个test-method(让我们称之为@test public void boot(){...}
),并引入一个顺序依赖项(使用JUnit 5非常容易),它强制boot
在运行任何其他测试之前运行,那么这些问题就会消失。
到目前为止还好!这看起来和工作很好。当测试不是由CI服务器执行,而是由试图排除故障的开发人员执行时,实际问题就开始了。当我尝试启动一个测试时,boot
被从测试执行中筛选出来,测试失败。
在Junit5中对此有什么解决方案吗?还是我应该采取完全不同的方法?
我怀疑使用@testtemplate
可能有一个解决方案,但我真的不知道如何进行。另外,afaik只允许我生成新的命名测试,将被过滤以及。我必须编写一个自定义测试引擎吗?这似乎并不引人注目。
这个更一般的测试问题与JUnit5有关。为了跳过很长时间的启动,如果可能的话,可以模拟一些组件。将引导系统作为测试是没有意义的,因为还有其他测试依赖于此。在这种情况下最好像以前一样使用@Beforeall。对于测试启动,您可以为那些完全独立于其他测试运行的测试类创建单独的测试类。另一种选择是将此类测试分组,并将其与普通单元测试分开,仅在需要时运行(例如,在CI服务器上部署之前)。这实际上取决于具体的用例,以及这些测试是否是本地机器上常规构建的一部分。
第三个选择是尽可能减少引导时间。如果您不能使用模拟/存根或从常规构建中排除这些测试,则可以选择此选项。
我需要为一个设计糟糕的旧应用程序编写JUnit测试,该应用程序正在向标准输出写入大量错误消息。当方法正确运行时,它将返回一个XML响应: 但当它得到格式错误的XML或不理解请求时,它会返回,并将一些内容写入标准输出。 在JUnit中是否有任何方法断言控制台输出?要捕获以下情况:
customer-Mapper.xml daoimpl.java
请注意,我没有访问实际的代码在一个地方,我可以张贴它。 此外,我也限于(由于不幸的原因)使用Spring 3.0.5或3.1.2。
问题内容: 这是我使用的文件: component.xml ServiceImpl.java ServiceImplTest.java 错误: 问题答案: 确保已导入正确的程序包。如果我正确地记住,有两种不同的自动布线套件。应该 : 这对我来说也很奇怪: 这是一个适合我的示例:
我想用mock它来模拟下面代码中的数据源对象,但每次我都得到空指针异常。 我试过嘲笑数据源和连接,但似乎什么都不起作用。
以下是我使用的文件: 组成部分xml 服务我mpl.java est.java 错误: