我们公司正在努力通过在自动化单元测试中实施最小功能覆盖来提高软件质量.这已经是一个很好的起点,至少可以编写一些测试并使其自动化(尽管最好选择分支或决策).
我主要担心的是在本政策投入使用后将要编写的测试结果.我经常看到这样的规则导致大量的空测试(即没有任何断言)或一些维护噩梦的集成测试.我发现以下SO问题接近主题,但这些问题更多地集中在覆盖百分比上:
相反,我想得到帮助或洞察,我们如何避免可怕的测试质量.所以这里有几个最糟糕的单元测试no-nos以及我已经想到的避免它们的内容:
1)空测试
2)集成测试
有很多团队,我并不完全相信团队内部的评论在所有情况下都足够了.因此,我对自动化质量保证的方式更感兴趣.
TIA,lutku
我正在尝试使用TeamCity在x64机器上为.net 4设置partcover.
测试已执行,但覆盖率报告显示0覆盖范围.
我在日志中收到以下消息:
No executable code was detected.
The issue could be caused by one of the following:
- Include / exclude patterns are incorrect
- Assemblies are compiled without debugging information
- .pdb files are not available
- Visual Studio code coverage is enabled for MSTest
- .testrunconfig is used for MSTest and Visual Studio code coverage is not disabled (CodeCoverage section with enable="true" is present)
Run Code Online (Sandbox Code Playgroud)
但包含模式是[*]*.
如果重要的话,我正在运行TeamCity 6.5.3.有没有人设法在该版本上运行partcover?
我有一个简单的django项目,其中包含一些应用程序.一切正常.现在我如何检查我的项目的代码覆盖率.我已经安装了coverge-3.5工具,并试图通过从终端输入"覆盖率报告"来了解覆盖率.它显示了一些结果
名称----->(我项目中的某个文件)
STMS ----->(某些数字)
MISS ----->(有些数字)
封面----->(有些%)
在我的情况下,它将显示一些结果,只显示我的项目中的一些文件名.它没有显示我的项目中的所有文件的覆盖率.如何让它显示我的所有文件名????
如果您知道,请建议任何更好的工作覆盖工具!
如何使用jar文件运行emma.我下载了emma.jar和另一个用于测试目的的jar(MySQLConnector.jar).我将两个罐放在同一个文件夹中,并试图给出这个命令
java -cp emma.jar emmarun -jar MySQLConnector.jar
Run Code Online (Sandbox Code Playgroud)
.但是我说错了
emmarun:无法从中加载Main-Class清单属性
[C:\ Documetings \管理员\桌面\罐\ MySQL的连接器的Java-5.0.8-bin.jar]
我如何解决这个问题!! ..还有其他测试代码覆盖率的方法也欢迎!!
提前致谢!!
我在 ZF2“入门”教程之后学习 Zend Framework 2 。现在我有一个简单的应用程序,即 IndexController 的 PHPUnit 测试(代码是从教程的首字母“单元测试”中复制的)。测试有效。现在我正在尝试创建一个代码覆盖率报告:
# phpunit --coverage-html ./report
Run Code Online (Sandbox Code Playgroud)
或者
# phpunit --coverage-html ./report ApplicationTest/Controller/IndexControllerTest.php
Run Code Online (Sandbox Code Playgroud)
我期望整个文件夹test(第一个示例)或IndexControllerTest(第二个示例)的覆盖率报告。
我目前得到的是这份报告:
为什么?以及如何让代码覆盖脚本处理我想分析的文件/文件夹。
编辑:
我可以导航到我的模块文件夹并查看它的报告:
但问题保持不变:(1)为什么它会这样工作以及(2)如何使代码覆盖脚本处理(仅)我想分析的文件/文件夹。
我正在使用UIAutomation测试应用程序,我想找出我的代码覆盖率.但由于javascript没有预处理器,这意味着gcov和类似的不是一个选项.有没有人为此提出解决方案?
这就是我的项目设置方式:
project/
assets/
js/
app.js
services.js
directives.js
controllers/
FooCtrl.js
BarCtrl.js
css/
images/
test/
unit/
controllers/
controllerSpec.js
Run Code Online (Sandbox Code Playgroud)
我正在努力将所有文件添加js/到karma-coverage的preProcessor指令中.
这样做
preprocessors: {
'**/assets/js/*.js': ['coverage'],
},
Run Code Online (Sandbox Code Playgroud)
仅为文件直接生成覆盖率报告,assets/js/但不为其下的文件生成assets/js/controllers/.
指定单个控制器:
preprocessors: {
'**/assets/js/controllers/FooCtrl.js': ['coverage'],
},
Run Code Online (Sandbox Code Playgroud)
只是说'没有要显示的数据'.
最后,只是做一个通配符:
preprocessors: {
'**/*.js': ['coverage'],
},
Run Code Online (Sandbox Code Playgroud)
直接下的所有文件显示的数据assets/js/,test/unit/controllers/ test/lib/等等,但它仍然拒绝显示任何覆盖数据assets/js/controllers/.
在go tool提供了一个很好的HTML视图高亮发现的代码.
但是,您需要选择要在选择框中显示的文件,而不知道其中是否包含任何未涵盖的代码.
如果我有大量的文件和大量的文件,我经常发现自己一个接一个地检查一个文件,以便找到不具有100%覆盖率的文件.
我知道这个-func开关,但有没有办法将html输出过滤到只有100%覆盖率的文件,或者在html视图中查看显示文件旁边的覆盖百分比的概述?
在我正在处理的一个项目中,如果我没有在 runsettings 文件中明确排除它们,则代码覆盖率中包含两个 nuget 包,而其他第三方库则没有。
这似乎是因为有问题的包在构建时在单元测试项目的bin文件夹中生成了一个PDB文件。
为什么有些包有 PDB 文件,而有些没有?有没有办法在没有 PDB 的情况下获得 NuGet 包?
有没有办法从代码覆盖率中排除第三方库?
假设我正在测试下面的React组件jest --coverage:
class MyComponent extends React.Component {
constructor(props) {
super(props)
if (props.invalid) {
throw new Error('invalid')
}
}
}
Run Code Online (Sandbox Code Playgroud)
覆盖率报告将说明该线路throw new Error('invalid')未被发现.既然.not.toThrow()似乎没有涵盖任何东西,我用酶制作以下测试:
const wrapper = shallow(
<MyComponent invalid />
)
it('should throw', () => {
function fn() {
if (wrapper.instance().props.invalid) {
throw new Error('invalid')
}
}
expect(fn).toThrow()
})
Run Code Online (Sandbox Code Playgroud)
这条线被覆盖了!然而,测试本身失败了encountered a declaration exception- 意味着原始组件抛出了错误(应该如此)?
我用toThrow()错了吗?