问题标签 [dependencies]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1898 浏览

c# - 在测试之外使用模拟对象,不好的做法?

我正在从事一个有很多外部服务消息传递的项目。用稍微“双曲线”的方式来描述它的一个好方法是系统必须向 Flicker API、Facebook API 和 Netflix API 发送消息的应用程序。

为了支持断开连接的场景、日志记录、开发人员可用性、配置等……我尝试了一种大量使用泛型和表达式树的方法。最终结果如下所示:

总的来说,我对最终结果很满意,但我觉得我犯了一个错误,或者在测试和断开连接的场景方面忽略了某个地方的设计原则。

在测试期间,无论是自动化的、单元的还是基于人的,我都实现了一个对象工厂,它最初使用 DI 在“实时模式”中执行正确的操作,并使用 Mocks 提供一种不做任何事情的无菌信使所有在测试模式下。

我只看到或读过 Mocks 在纯 TDD 模式下使用,而不是被用作某种愚蠢的对象。我看到的方法将围绕着对我使用的所有 API 所依赖的 HTTP 通信功能进行存根或模拟。

我主要担心的是,我希望连接的所有不同服务最终将不得不做很多细粒度的工作来替换特定的 HTTP 实现,如果我使用存根方法,我将为这些服务中的每一个提供 3 个类( IService、ConcreteService、StubService )并在实现新方法或更改任何内容时维护它们将是真正的 PITA。

在当前的实现中,我使用 Mocks 来免费获得“无菌模式”,几乎无需为了符合某个测试主体而实现任何额外的东西。

问题是我错过了什么吗?我是否以更方便的方式使用 Mocks 违反了设计原则?

任何人都可以就如何从许多不同的外部服务中获得无菌模式提供任何建议,而无需跳过很多圈子?

这个问题有意义吗?

感谢所有的答案。

编辑#1:

我最初的问题并不清楚。任何空对象或模拟对象都将纯粹用于开发/调试/测试环境。在生产中,发送这些消息的代码将是它们的实际实现。

我对每个人都投了赞成票,因为对于这个问题似乎有很多不同的解决方案,我将探索每一个。

请不要认为这个问题已经得到回答,我会尽可能多地获得建议。

0 投票
2 回答
142 浏览

.net - 从 Internet 加载依赖程序集是一种好习惯吗?

我知道有几种方法可以部署 .net windows 客户端应用程序:

Windows Installer , Click Once , 一个简单的下载 & 运行, 并在 Internet Explorer 中加载 windows 窗体/WCF 应用程序 (不要将后者与 WCF/E - Silverlight RIA 应用程序混淆)

所以...考虑一下真正的 Windows 客户端应用程序——只是为了明确一点:那些在你的文件系统中由 .exe 组成的应用程序——可以从 Internet 加载其部分或全部依赖项是一个好主意吗?

显然有一些严重的缺点:必须始终连接,客户端中的CAS配置(互联网依赖项将在Internet_Zone 代码组中),更不用说加载时间了。

但我也能想到几个优点。

有哪些问题?有人在实际项目中使用过这个吗?

0 投票
3 回答
7373 浏览

.net - 未复制到输出目录的引用的依赖关系

我有一个 CommonUtils 库,我已经内置到一个 dll 中,我从我的几个项目中引用了它。CommonUtils 依赖于在构建 CommonUtils.dll 时设置为文件引用和 copy-local=true 的 log4net.dll。log4net.dll 和 CommonUtils.dll 不在 GAC 中。

在 MyWorkingProject 中一切正常,我只有一个对 CommonUtils.dll 的文件引用 - log4net.dll 显示在输出目录中(因为它是 CommonUtils.dll 的依赖项,但未从 MyWorkingProject 引用)。但是,如果我创建一个新项目来添加一些单元测试:MyWorkingProjectTest 和项目引用 MyWorkingProject,然后在此处再次文件引用 CommonUtils.dll(我想使用一些 CommonUtils)然后在构建 log4net.dll 时,它是两个项目的依赖项参考和文件参考也不会被复制到输出目录。

谁能澄清这里发生了什么?编译器是否不知道它应该抓取哪个 log4net.dll 文件?我在这里做错了什么吗?我应该以其他方式执行此操作以显式复制 log4net.dll 吗?我必须明确引用 log4net 是否有意义?

0 投票
3 回答
10194 浏览

maven-2 - Maven:OSGI、包和多模块项目

我目前正在开发一个基于 OSGi 的应用程序(使用 Equinox),方法是尝试对我在 OSGi+Equinox 上找到的网络教程进行 mavenize。在这个项目中,有一些依赖于其他包的包(quote-service 依赖于报价)。编译阶段确实成功,但打包阶段没有。Maven抱怨以下内容:

我确实理解这个问题,但不知道如何使它工作。这是报价的 pom :

和报价的捆绑清单:

然后是报价服务的 pom :

最后是报价服务的清单:

有什么不对 ?先感谢您 !

0 投票
5 回答
7953 浏览

unit-testing - 单元/集成测试中文件系统依赖的最佳实践

我刚开始为很多代码编写测试。有一堆依赖于文件系统的类,即它们读取 CSV 文件、读/写配置文件等等。

目前,测试文件存储在项目的测试目录中(它是一个 Maven2 项目),但由于多种原因,该目录并不总是存在,因此测试失败。

你知道在单元/集成测试中处理文件系统依赖的最佳实践吗?

编辑:我不是在寻找我上面描述的那个特定问题的答案。那只是一个例子。我更喜欢一般建议如何处理对文件系统/数据库等的依赖关系。

0 投票
4 回答
1303 浏览

sharepoint - Sharepoint Web 部件管理

我在 Sharepoint 和 Project Server 上开发了一个相当大的项目,设计为多层应用程序。我以编程方式管理某些 Web 部件页面上的 Web 部件。根据用户在其中一个网页中的选择,将适当的网页部件添加到另一个网页部件页面的网页部件集合中。我的问题是我根本不知道在哪里管理 Web 部件,我应该在 BLL 中进行管理,然后让包含业务逻辑的程序集引用 Web 部件所在的 UI 程序集吗?(我需要在将 Web 部件添加到集合时对其进行实例化,因为我不想使用表示 Web 部件 dwp 的硬编码字符串。)

0 投票
1 回答
396 浏览

maven-2 - maven-camel 构建问题

我有一个简单的应用程序,使用 netbeans 进行开发,使用 maven 进行构建等。我的应用程序使用 camel ,配置了 spring XML。我想构建一个带有依赖项的可执行 jar,所以我使用带有 'jar-with-deps' 描述符的 maven-assembly 插件。jar 构建良好,但我认为由于所有依赖项都已解包,并且其中一些依赖项在与其他依赖项相同的路径中具有相同的资源,因此它们会相互覆盖。我通过使用 winrar 浏览 jar 来验证这一点,我发现在很多地方都出现了同一个文件。我认为这是无法通过一些简单的 maven 配置来解决的,因为我无法阻止依赖项想要特定路径中的资源,而另一个依赖项也使用它。顺便说一句,该应用程序在 netbeans 内运行正常。我还看到我的应用程序类多次出现。

总而言之,我想知道:

  1. 是否有任何简单的解决方案可以找到此类冲突,如果没有纠正它们,至少要报告它们?(如何)

  2. 我可以告诉归档器(在 maven 中)不要解开 deps,而只是将 jar 包含在父 jar 中,然后将 jar 包含在清单类路径中,以及如何?这会解决问题还是具有相同的结果?

  3. 为什么在同一路径中还会多次出现我的应用程序类?

为了让您了解问题,当前生成的 jar 在使用 WinRAR 查看时,在根路径中有 3 个“log4j.properties”实例,在 meta-inf/ 路径中有 7 个文件“spring.schemas”实例,以命名一些。

0 投票
4 回答
306 浏览

c - 在 C 中确定符号来源的工具

我正在寻找一种工具,它会告诉您从给定的头文件中使用了哪些符号(类型、预编译器定义、函数等)。我正在做一个从 Solaris 到 Windows 的大型驱动程序的移植,并且弄清楚事情的来源变得越来越困难,所以这将是一个巨大的帮助。有任何想法吗?

编辑:不是绝对要求,但适用于 Windows 的工具将是一个加号。

编辑#2:为了澄清我正在尝试做的事情,我有一个我正在尝试移植的代码库,它带来了大量的标头。我想要的是一个工具,给定 foo.c,它会告诉我它使用 bar.h 中的哪些符号。

0 投票
5 回答
45081 浏览

c# - 对于 .NET/Windows 窗体项目,是否有 Maven 的替代品?

C# Windows 窗体项目使用什么代替Maven ?

我们在世界各地都有开发人员,并且正在尝试开发一些简单快速的依赖管理系统。

0 投票
1 回答
1082 浏览

sql - 使用EntLib缓存块的Sql缓存依赖

如何使用企业库应用程序块实现 sql 缓存依赖?