我的团队正在努力教育我们的一些开发人员进行测试。他们理解为什么要编写测试并且在船上他们应该编写测试,但是在编写好的测试方面却有所下降。
我刚看到像这样的提交
public void SomeTest{
@Test
public void testSomething{
System.out.println(new mySomething.getData());
}
所以他们至少确保他们的代码通过查看给他们预期的输出。
我们可以真正推销代码审查的想法。与此同时,我正在考虑让JUnit在其中没有实际的assertXXX或fail语句的任何测试失败。然后我想让失败消息说出“你的测试应该使用断言并实际检查输出!”。
我完全希望这会导致assertTrue(1 == 1);
之类的通话。我们正在努力让团队购买进行适当的测试和代码审查,我们可以使用任何技术机制来让已经获得它的开发人员更轻松吗?那些帮助新人理解的技术机制呢?
答案 0 :(得分:2)
我认为你应该考虑组织变革:指导,培训,代码审查。
如果您真诚地使用这些工具并对目标有基本的了解,这些工具只会对您有所帮助。如果其中一个缺失,他们将无法帮助您。
人类只是聪明地做倾销事情或解决指标。我认为如果他们不能写一个有用的测试,你的评估是不正确的“他们”。在这个阶段,自动工具根本就不是正确的工具。你不能通过程序告诉你下一步做什么来学习。
答案 1 :(得分:1)
您可以使用一些静态代码分析器。
我使用PMD,其中包含JUnit rule set。有很多IDE plugins会在IDE中标记规则违规。您可以根据需要配置规则集。
您还可以从其他规则集中获益 - 这将警告您代码风格/最佳做法违规(尽管您有时必须决定该工具或您是傻瓜: - ))。
答案 2 :(得分:0)
为未来的观众回答所述问题。
JUnit使用反射运行测试函数,如果有任何异常,错误抛出 - >测试失败,否则成功。 Assert类只是一个utils类。