- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我为一个项目编写了一个 wcf 服务库。它可以托管在 IIS 和自托管服务中。
对于所有连接的外部系统,我提供了提供一些通用数据的 Mock 实现,这样服务(库)就可以保持运行和工作。它是一个经典的自动机/有限状态机。
引导时,所有数据源都已连接。在测试模式下,模拟实现是连接的。因此,当我运行测试时,服务库是从自托管服务“启动”的,而不是 IIS,并且状态机保持运行和处理数据包。
有没有办法从这样的运行中获得某种“测试覆盖率”。
如果我能分辨出我从模拟对象提供的示例数据命中了哪些代码路径,我将不胜感激。然后提供更多的测试数据以获得更高的覆盖率。
如果我无需提供“大量额外”测试代码就可以做到这一点,那就太好了。我认为模拟对象提供的数据已经涵盖了很多案例。但现在我还没有起点。
以下是一些代码示例,可以更清楚地说明其含义。代码当然大大简化了。
在一个非常简单的控制台应用程序中启动服务(自托管版本)
static void Main(string[] args)
{
using (var host = new ServiceHost(typeof(MyServiceLib.Service.MyServiceLib)))
{
host.Open();
Console.ReadLine();
host.Close();
}
}
在服务库中,从该代码调用构造函数
public MyServiceLib()
{
Task.Factory.StartNew(this.Scaffold);
}
除了启动状态机什么都不做
private void Scaffold()
{
// lots of code deleted for simplicity reasons
var dataSource = new MockDataSource();
// inject the mocked datasource
this.dataManager = new DataManager(dataSource);
// this runs in its own thread. There are parts that are started on a timer event.
this.dataManager.Start();
}
public class DataManager : IDataManager
{
public void Start()
{
while (this.IsRunning)
{
var data = this.dataSource.getNext();
if (data != null)
{
// do some work with the data retrieved
// lots of code paths will be hit from that
this.Process(data);
}
else
{
Thread.Sleep(1000);
}
}
}
public void Process(IData data)
{
switch (data.PackageType)
{
case EnumPackageType.Single:
{
ProcessSingle(data);
break;
}
case EnumPackageType.Multiple:
{
ProcessMultiple(data);
break;
}
// here are lots of cases
default:
{
Logger.Error("unknown package type");
break;
}
}
}
}
到目前为止我尝试了什么:
有一个特殊的测试dll,可以创建如上所示的主机,但是无法正确创建主机,所以测试并没有真正开始。我收到“主机处于故障状态”错误消息。我关注了this mini-tutorial .尽管如此,我还是得到了一份覆盖率报告,计算出的覆盖率约为 20%。但是服务才刚刚开始,到目前为止还没有做任何工作。
基本上描述了这些步骤in this article .我得到一个 myproject.coverage 文件,但我无法查看它,因为我只有 VS Professional,覆盖率似乎仅在 Test Premium 或 Ultimate 版本中使用。
除了尝试过这两个之外,我会接受任何显示如何启动和运行其中任何一个的答案(首选 openCover)。
将接受一个答案,该答案显示如何测试此设置并获得代码覆盖率,同时利用工具生成大部分代码(就像 pex 一样,但在试用后我发现它不会生成非常好的代码)。
最佳答案
查看服务的操作会有所帮助。
我从未尝试过在覆盖工具下运行这种“控制台类型”的应用程序。
我建议使用 NUnit(或任何其他单元测试框架;这显然不是单元测试,但该技术非常适合)来编写测试。
在测试中,你打开服务宿主,创建服务的客户端,让客户端对你的服务执行一些操作,然后关闭服务宿主。
在覆盖工具下运行这个测试,你应该完成了。
大约 7 年前,我用 NUnit 和 NCover 做到了这一点,当时使用的是它们的当前版本(如果我没记错的话,NCover 是免费软件)。
关于c# - IIS 托管 WCF 服务 : Integration tests and code coverage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254987/
您好,我已经在互联网上进行了大量搜索,但是我找不到为我们的golang项目生成html coverage文件的简便方法,但至少我可以得到如下所示的coverage.dat文件 mode: set pa
我正在尝试为 cython 模块生成代码覆盖率报告,并面临问题。 我有一个简单的 C++ 代码:apple.h 和 苹果.cpp 文件。 cpp 文件很简单: using namespace std;
我正在开发一个包含一些测试用例的 module1。我有另一个模块2,它可以运行这些测试用例并生成覆盖范围。目前 .coverage 文件夹是在调用 module2 的当前工作目录中生成的。有没有办法指
我最近将代码覆盖引入了我的项目。它创建了一份我可以查看的报告,而且它似乎运行良好。 唯一的问题是它缺少我的测试——我现在没有很好的代码覆盖率,但它报告所有类和其他文件的覆盖率为 0%。 我可以看到正在
我正在尝试将我当前的 AngularJS 项目与 Karma Coverage 集成。请在下面找到 package.json 和我的 karma 配置 . Package.json { "name
我正在尝试为我的 gitlab 项目显示准确的覆盖率徽章。 问题是我有几个包,在 gitlab-ci.yml,我运行 go test $(go list ./... | grep -v /vendor
由于贡献线,Jenkins 仪表板上的“W”列显示了我所有 PHP 项目的 Storm Clover Coverage: Conditionals 0% (0/0) 因为 PHP_CodeCovera
我能够按照以下步骤获得代码覆盖率报告, 启用对所需构建类型的覆盖(例如调试) buildTypes { 调试{ testCoverageEnabled 真 } } 应用Jacoco插件并设置版本 应用
当 rcov 生成报告时,它会显示每个文件的“总覆盖率”和“代码覆盖率”。这两个指标有什么区别? 最佳答案 来自 http://www.rubydoc.info/github/relevance/rc
我正在尝试获取基于 arm 的嵌入式系统的代码覆盖率。使用 x86 进行交叉编译。基本上,我有一个交叉分析问题。 对于我想要生成代码覆盖率数据的应用程序,我定义了一个信号处理程序,我在其中调用 __g
与 cobertura-maven-plugin可以使用 ignoreTrivial 从代码覆盖率中排除 setter 和 getter选项。 jacoco-maven-plugin是否也有这种可能?
有没有人用 Jenkins CI 安装了 Grails -code-coverage 插件? 如果可以,请指导我完成设置? 最佳答案 您可以试试这个教程:code coverage 关于code-co
系统定义: 2012 macbook pro 运行 Sierra, Docker 版本:17.12.0-ce-mac49 (21995) 问题: 我在容器中使用“覆盖运行”运行我的 python 应用
尝试启动并运行代码覆盖率,我只是先阅读文档。我发现一些文章提到了使用 --coverage 标志进行构建,而其他文章提到了 --ftest-coverage。 两个描述似乎都说它们做同样的事情,但我不
尽管安装了插件,但我似乎无法使用 Nose 获得代码覆盖率。 关于如何解决这个问题的任何想法? 12:15:25 ~/sandbox/ec$ nosetests --plugins Plugin xu
我正在尝试在预先提交的钩子(Hook)中对暂存文件运行测试。到目前为止,一切都很好。可以使用 pre-commit和 lint-staged NPM 包。 来自 package.json 的片段: {
我有 .coverage 文件指示由 coverage.py 生成的我的 Django 项目的代码覆盖率: coverage run --branch --source='.' manage.py t
我试图让 Cobertura 在我的 ant 脚本中运行。一切顺利(源代码构建、junit 测试、cobertura 报告(xml/html);但在 html 报告中,代码覆盖率始终为 0% ...
因为团队内部开启了一个持续的前端代码质量改进计划,其中一个专项就是TS类型覆盖率,期间用到了 type-coverage 这个仓库,所以借这篇文章分享一下这个工具,并顺便从源码阅读的角度来
我通过在服务器启动脚本中将 -javaagent 设置为 jvm 选项来创建 jacoco.exec 文件。现在我想使用覆盖率执行文件生成覆盖率报告。 我已经了解了所有 Jacoco 报告生成选项(m
我是一名优秀的程序员,十分优秀!