jjzjj

java - 我是否应该使用依赖注入(inject)以获得良好的设计和可测试的代码?

我有一个表示图像的类:它称为Photography。构造函数如下所示:Photography::Photography(QStringoriginalPath,QStringappDirectory){this.originalPath=originalPath;this.appDirectory=appDirectory;}该类包含许多方法,如getTitle()、getCaption()、getSize()、isHorizo​​ntal()等有一个名为getThumbnailPath()的public方法,如下所示:QStringPhotography::getThumbnailP

c++ - MFC 应用程序的任何可测试架构或设计模式?

这个问题困扰了我一段时间。我正在为MFC应用程序寻找可测试的架构设计模式。请不要告诉我MFC已经是MVC或类似的东西,因为只要我们不能测试应用程序,它就没有任何意义。我理解经验法则是让它View/Document尽可能愚蠢并且使其他类可测试。但我想要更多细节。我怎样才能使View/Document尽可能愚蠢并将它们连接到其他可测试的类?首先,我想到了MVP,因为我在Windows.NET和Android应用程序中取得了一些成功。但在这个MFC案例中,我们也需要使Document变笨。这使事情复杂化。我需要一个可长期维护的有效架构。经验丰富的开发人员的任何建议将不胜感激。

c++ - 我是否应该让一个成员函数成为虚拟的只是为了让一个类可测试?

我正在研究一个简化版本如下所示的类:classHttp_server{public:voidstart(intport){start_server();std::stringcontent_type=extract_content_type(get_request());}private:voidstart_server(){...}std::stringget_request(){...}std::stringextract_content_type(conststd::string&request)const{...}};现在我想为extract_content_type编写一个测

c++ - C++ 中的单元测试

仅仅为了让一个类可测试就可以使用接口(interface)打破所有依赖关系吗?由于许多虚拟调用而不是普通方法调用,它在运行时涉及大量开销。测试驱动开发在现实世界的C++应用程序中是如何工作的?我阅读了WorkingEffectivelyWithLegacyCode并喜欢它非常有用,但没有跟上实践TDD的速度。如果我进行重构,我经常会因为大量的逻辑更改而不得不完全重写单元测试。我的代码更改经常会更改数据处理的基本逻辑。我看不出有什么方法可以编写不必在大型重构中更改的单元测试。可能有人可以向我指出一个使用TDD通过示例学习的开源C++应用程序。 最佳答案

c++ - -fvisibility=hidden 编译器未通过调试版本

我正在构建一个启用了GCC_INLINES_ARE_PRIVATE_EXTERN和GCC_SYMBOLS_PRIVATE_EXTERN的项目,因为我正在使用预先构建的带有这些标志的静态库。但是,当我为Debug构建项目时,-fvisibility=hidden未包含在编译器标志中,但在为Release构建项目时它确实包含在内。我是否需要打开任何其他标志才能实现此目的? 最佳答案 这是旧的,但冲突似乎来自启用可测试性设置。如果你关闭它,那么-fvisibility=hidden将正常工作。似乎启用可测试性比GCC_SYMBOLS_PR

Android 许可验证库和多个 Google 帐户

Android许可验证库是否支持登录多个Google帐户的设备?它是否使用第一个Google帐户来确定谁购买了应用? 最佳答案 我在许可证服务故障排除页面找到了答案。如何验证我的许可实现是否正确?将应用程序上传到市场之前如果Market上没有具有该软件包名称和版本代码的应用程序,请使用您的发布者帐户作为主帐户登录手机,设置测试响应,并验证您的应用程序是否针对这些响应正常运行。将应用程序上传到市场后如果您已将带有许可检查的应用程序上传到市场(无论应用程序的当前发布状态如何),请使用您的发布者帐户或许可测试帐户作为主帐户登录手机,设置测

c# - C++ 中的可测试性设计

我想了解在C++中设计可测试应用程序的最佳方式,也许与C#相比(因为它是我的背景并且非常适合测试)我习惯于对接口(interface)、依赖项注入(inject)、控制框架的反转和模拟对象进行编码。由于C#有很多不同的语言特性,我不确定有多少模式仍然适用。我还认为C++的独特功能/限制可能会导致不同的测试策略。我看过单元测试框架,我喜欢GoogleTest,但编写新代码以使其尽可能可测试也很重要。是否有任何开源项目可以推荐为C++测试做对了吗?有没有更详细地讨论这个主题的书籍或文章?对其他框架/库的建议谢谢 最佳答案 我自己现在也处

Java模块化开发:提高代码的可维护性与可测试性

Java模块化是指将大型的软件系统划分为不同的模块,每个模块具有独立的功能和责任。模块化开发可以提高代码的可维护性和可测试性,使得软件开发更加灵活、高效和可靠。模块化是指将软件系统划分为若干功能相对独立、高内聚低耦合的模块,在模块内部进行封装和抽象,模块之间通过定义良好的接口进行通信和协作。模块化开发可以将复杂的软件系统分解为多个相互独立的模块,每个模块都具有清晰的功能和责任,使得代码的结构更加清晰,易于理解和维护。当需要修改或扩展功能时,只需关注特定的模块,而无需影响其他模块,降低了代码的耦合度。模块化开发利于单元测试和集成测试的进行。由于模块间的接口定义明确,可以通过对每个模块的独立测试来

如何有效保证测试设计的效果

·与需求相关的各种问题,如烂需求、伪需求和不清晰的需求。·开发的功能无法有效验证,可测试性不强。·过于死板的测试设计策略。这就需要测试者能够有效澄清和确认需求,有针对性地提出可测试性需求,并针对不同的项目选择合适的测试设计方法。如果说各种测试设计方法(如车轮图、测试设计四步法、对测试点进行分类、最小线性无关路径覆盖、输入-输出表、等价类分析表、因子表)是基本动作,那接下来要讨论的内容就是做好测试设计的有效保证,是测试者把控测试设计水平的重要体现。有效澄清和确认需求需求问题才是研发领域长久以来的短板,对此已经有太多的教训,尽管试图用场景、用户故事(userstory)、用户案例(usercase

ios - 如何在 Release模式下启用框架的可测试性?

我有一个iOS应用程序项目,由Swift3.0编写工作区包含一个由我们的团队构建的动态框架,用于在整个项目中共享可重用的代码和资源。我们使用ActivateCompilationConditions来切换生产服务器url和beta服务器url,如下所示:#ifDEBUGleturl="http://my-beta-server-url"#elseleturl="http://my-production-server-url"这样当应用程序被归档时,url将切换到生产服务器url。并且在调试的时候,我们可以使用beta服务器进行开发。我们有一个单元测试目标来测试这个框架。最近我们想添加一