我一直使用Jasmine进行unit testing,但最近我开始使用Istanbul来给我提供代码覆盖率报告。 我的意思是我明白了他们想要告诉我的要点 ,但是我不知道每个百分比代表什么(Stmts,Branches,Funcs,Lines)。 到目前为止谷歌search我一直无法find一个坚实的解释/资源。 问题 :就像我说的那样,我能得到它的要点,但是可以有人发布一个正确的解释或链接到一个正确的解释? 第三个问题 :有什么方法可以确定你的代码的哪些部分不被覆盖? 到目前为止没有真正grokking这个报告,我基本上猜测。 ——————-|———–|———–|———–|———–| File | % Stmts |% Branches | % Funcs | % Lines | ——————-|———–|———–|———–|———–| controllers/ | 88.1 | 77.78 | 78.57 | 88.1 | dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 | ——————-|———–|———–|———–|———–| All files | 88.1 | 77.78 | 78.57 | […]
你有任何实际应用突变检测的例子吗? 它比简单的testing覆盖工具更好吗? 还是没用? 现实世界中突变检测的优点和缺点是什么?
在Xcode 5中启用代码覆盖范围的情况下运行testing目标时,在构build输出中会收到以下几十条消息: profiling:invalid arc tag (0x…) 它看起来不会影响testing,因为它们成功完成,而且GCDA覆盖率文件也按预期生成。 任何想法的信息意味着什么,或者如何抑制消息/解决问题,因为他们杂乱的生成输出,并很难findtesting用例的结果。
我已经切换到最新的JDK 7,并且我正在对由emma覆盖工具弄乱的字节码进行testngunit testing。 我的testing用例都没有正确运行,而且其中大部分我都收到这样的错误。 java.lang.ClassFormatError: Illegal local variable table length 10 in method measurement.meter.AbstractSerialPortMeter.<init>(Lmeasurement/meter/SerialPort;)V at measurement.meter.Elc3133aTest.setUp(Elc3133aTest.java:42) 我在这里find了一篇文章JSR 292 Goodness Fast Code Coverage Toolless于10k ,这就是说“JSR 292引入了一个新的字节码指令invokedynamic,而且还有一些新的常量池常量,这意味着大多数parsing字节码的工具就像ASM,BCEL,findbugs或EMMA将需要更新为Java 7兼容。“ 检查了Emma主页,但看起来好像很久没有更新了。 有没有人解决过类似的问题? 我也尝试过Cobertura。 它看起来更好一些,但是我得到了许多typesVerifyError的exception。 java.lang.VerifyError: Expecting a stackmap frame at branch target 85 in method measurement.meter.AbstractSerialPortMeter.close()V at offset 26 at measurement.meter.AbstractSerialPortMeterTest.setUp(AbstractSerialPortMeterTest.java:27)
我有一个Heaviside步骤函数集中于任何数据types,我编码使用: template <typename T> int h1(const T& t){ if (t < 1){ return 0; } else if (t >= 1){ return 1; } } 在代码审查中,我的审稿人告诉我,在所有的控制path上都没有明确的回报。 而编译器也不会警告我。 但我不同意; 条件是相互排斥的。 我如何处理这个?
你在Java项目中使用哪些代码分析工具? 我对各种感兴趣 静态代码分析工具(FindBugs,PMD和其他) 代码覆盖工具(Cobertura,Emma和其他) 任何其他基于工具的工具 别的什么,如果我失去了一些东西 如果适用,还请说明您使用的构build工具以及这些工具与IDE和构build工具的集成程度。 如果一个工具只有一种特定的方式(作为一个IDE插件,或者说一个构build工具插件),那么这个信息也是值得注意的。
在我的代码中的计算是经过充分testing,但由于有这么多的GUI代码,我的整体代码覆盖率低于我想要的。 有unit testingGUI代码的指导吗? 这是否有道理? 例如,我的应用程序中有graphics。 我还没有弄清楚如何自动化图表的testing。 这需要人眼AFAIK来检查图表是否正确。 (我正在使用Java Swing)
什么是代码覆盖率,你如何衡量它? 我被问到关于我们的自动化testing代码覆盖率的这个问题。 似乎是在自动化工具之外,它比艺术更具艺术性。 任何人都有他们如何使用代码覆盖率的真实世界的例子?
如果你要为unit testing规定一个最小百分比的代码覆盖率,甚至可能作为对存储库提交的要求,那将是什么? 请解释你是如何得到你的答案的(因为如果你所做的只是select一个数字,那么我自己就可以完成这一切;)
这是代码: package com.XXX; public final class Foo { private Foo() { // intentionally empty } public static int bar() { return 1; } } 这是testing: package com.XXX; public FooTest { @Test void testValidatesThatBarWorks() { int result = Foo.bar(); assertEquals(1, result); } @Test(expected = java.lang.IllegalAccessException.class) void testValidatesThatClassFooIsNotInstantiable() { Class cls = Class.forName("com.XXX.Foo"); cls.newInstance(); // exception here […]