使用maven和jenkins,如何测试程序员做了一些测试用例?
我正在从事多个项目,我们正在使用Java,Springs,Maven和Jenkins进行CI,但是我遇到了一些程序员没有在项目中添加真正的junit测试用例的问题。我希望maven和jenkins在部署到服务器之前先运行测试。一些程序员进行了空白测试,因此它可以启动和停止,并通过测试。
有人可以告诉我如何自动执行此检查,以便maven和jenkins可以查看测试是否输出了一些结果。
-
除了查看代码之外,我没有找到任何解决此问题的好方法。
代码覆盖率无法检测到我见过的最糟糕的单元测试
查看测试数量,那里也失败。查看测试名称,您打赌失败。
如果您拥有像“ Kevin”这样的开发人员来编写此类测试,则只能通过代码审查来捕获这些测试。
“ Kevin”如何击败检查的摘要:
-
编写一个名为的测试
smokes
。在此测试中,您将使用不同的参数组合调用被测类的每个方法,每个调用都包装在中try { ... } catch (Throwable t) {/* ignore */}
。这为您提供了广泛的覆盖范围,并且测试从未失败 -
编写空测试用的名字听起来像你已经想到了花哨的测试场景,例如负载
widgetsTurnRedWhenFlangeIsOff
,widgetsCounterrotateIfFangeGreaterThan50
。这些是空的测试,因此将永远不会失败,并且经理检查CI系统将看到许多详细的测试用例。
代码审查是捕获“ Kevin”的唯一方法。
希望您的开发人员没有那么糟糕
更新资料
今天早上我洗个澡。有一种自动分析可以捕获“
Kevin”,但是不幸的是它仍然可以被欺骗,因此尽管它不是编写不良测试的解决方案,但确实使编写不良测试变得更加困难。这是一个旧项目,无法在最新代码上使用,我不建议您使用此代码。但是我建议它暗示一种自动分析类型,它将阻止“ Kevin”
如果要实现这一点,我将要做的是编写一个“
JestingClassLoader”,它使用例如ASM一次用一个小的“笑话”来重写字节码。然后,在使用该类加载器加载后,针对您的类运行测试套件。如果测试没有失败,那么您就在“凯文”地区。问题是您需要针对代码中的每个分支点运行所有测试。不过,您可以使用自动覆盖率分析和测试时间分析来加快速度。换句话说,您知道每个测试执行的代码路径,因此,当对一个特定路径进行“开玩笑”时,您仅运行符合该路径的测试,然后从最快的测试开始。如果这些测试都没有失败,则说明您的测试覆盖范围很弱。因此,如果有人要对“弄臣”进行“现代化”,那么您将有办法找出“凯文”。
但这不会阻止人们编写不良测试。因为您可以通过编写测试来通过该检查,以验证代码的行为是否符合当前的行为,错误以及所有。哎呀,甚至有一些公司出售会“为您编写测试”的软件。我不会通过从此处链接到他们来为他们提供Google
Page排名,但是我的观点是,如果他们能够使用此类软件,您将拥有大量测试,这些测试会直接影响您的代码库,并且不会发现任何错误(因为更改任何内容后,“生成的”测试将立即失败,因此,进行更改需要争论更改本身以及更改所导致的所有单元测试的更改,即使更改,业务成本也会增加该更改正在修复一个
真正的 错误) -
-
如何设计测试用例?什么样子的测试用例是好用例?
2020-01-17 关注 0 浏览1087 1答案
-
Maven在运行测试用例Eclipselink和hsqldb时挂起
2021-01-30 关注 0 浏览96 1答案
-
如何编写JUnit测试用例以测试线程和事件
2021-01-30 关注 0 浏览103 1答案
-
在软件开发中,我们经常要使用测试用例对程序进行检查,一次成功的测试是指运行测试用例后()
2022-03-03 关注 0 浏览60 1答案
-
如何使用Jenkins / Maven运行硒测试?
2021-01-31 关注 0 浏览125 1答案
-
如何使用Grid并行执行黄瓜测试用例?
2021-01-30 关注 0 浏览245 1答案
-
如何在Jenkins环境中获取iOS的详细单元测试用例执行日志
2021-01-31 关注 0 浏览217 1答案
-
在相同的测试用例或单独的测试用例中测试默认值和设置器
2021-01-30 关注 0 浏览142 1答案
-
如何更好的编写测试用例?
2022-09-21 关注 0 浏览14 0答案
-
如何提高测试用例设计的测试覆盖率?
2022-09-21 关注 0 浏览22 5答案