我想我误解了一些东西却找不到确切的东西.我用Google搜索,但没有得到这个想法.有两种流行的技术 - 持续集成和分布式源代码控制.人们以某种方式将它们结合起来,但我不明白如何.
AFAIK,持续集成意味着一旦您在本地测试代码,就会提交到中央存储库(推送).与此同时,分布式系统非常受欢迎,因为您可以在本地提交和提交并提交代码并使用代码,只有在您对其充满信心和满意时才将其推送给其他代码.因此,虽然它没有强制,但它鼓励不要急于推动.在我看来,每隔几个小时就不会发生CI推送的经典之作.
那么你如何以及何时将这两件事联系起来呢?或者我说的错了吗?
编辑
我读了前三个答案.感谢您的答复.我仍然感到困惑,但现在我可以更准确地提出这个问题了.
在分布式系统中,没有那么多频繁提交的愿望,然后是集中式的.那么有关于在分布式系统中发布以符合CI的频率的指南吗?它仍然是一天几次还是这个规则的另一个版本?
这个问题是关于单元测试的程度.
我一直在编写一个典型的程序,用XML消息中的信息更新数据库.我想到了它需要的单元测试.程序根据复杂的规则插入或更新记录,从而产生许多不同的情况.起初,我决定针对每种情况测试以下几个条件:
在我看来,第三种测试真的很有意义.但很快我发现这并不容易实现,因为你实际上需要对数据库进行快照,然后将其与修改后的数据库进行比较.我很快就开始厌倦了我需要为不同的数据库修改案例编写这样的测试,而这些测试在规范和生产代码设计方面没有多少价值和信息.
然后我想,也许,我测试的太多了?如果没有,那么如果我测试程序不会修改不相关的记录,那么为什么我不测试它:
我完全糊涂了绘制边界的地方.你会在哪里画它?
UPDATE
我的答案读了很多有用的提示和一个标记作为解决方案,因为它有更多有用的意见给我,但仍然是我不清楚如何正确测试数据库更新.测试程序不会改变太多有意义吗?如果是这样,那么有多彻底?
有时候,我感到自己想嘲笑被测者的愿望,我知道它看起来很奇怪。
这是例子。我使用C#,但这没关系。假设您有一个班级管理一些馆藏。它有方法
public void Insert(int position, T element)
Run Code Online (Sandbox Code Playgroud)
和
public void Delete(int position)
Run Code Online (Sandbox Code Playgroud)
这些方法的逻辑不是很简单。除了修改集合外,它们还可以例如引发事件,订阅事件或从事件中取消订阅,获取/释放资源或执行计算。这些方法包含在检查此功能的单元测试中。
现在添加一个方法
public void Replace(int position, T element)
{
Delete(position);
Insert(position, element);
}
Run Code Online (Sandbox Code Playgroud)
我并不完全确定,但是对我来说,用这种方法再次测试所有这些东西是不值得的。相反,检查此方法是否真的首先调用两者是有意义的。
如果前两个方法属于另一个类或接口,那么使用现代的模拟框架将很容易。但是这些方法属于SUT。
可以做我想做的吗?如果没有,那为什么呢?这是模拟方法的意外缺陷还是设计使然。如果是第一个,是否有解决方法?如果第二,我应该如何设计和测试所描述的程序?
任务很普遍,但我对目前为止找到的解决方案并不满意.
程序必须在后台运行,定期扫描系统以查看状态更改,并在某些情况下显示通知弹出窗口给用户.该程序在Windows 7下运行.
有两个细微差别.首先,它需要提升权限(最高级别,以管理员身份运行,Windows中存在大量术语)来扫描一些受保护的系统信息.其次,它必须适用于拥有管理权限的所有用户.
以下是典型解决方案的列表以及它们不适合的原因.
这项任务看起来非常普遍,但解决方案很复杂.我误解了什么吗?有更简单的方法吗?
PS:我已经看到过这个主题具有管理权限的进程在用户登录时运行,但想知道是否有更简单的方法.
UPDATE
我发现使用Windows服务的解决方案对我的任务也不起作用.我需要访问用户的个人证书存储区.服务在一个帐户下运行,需要访问另一个帐户的证书.我还没有找到如何使用.Net加密API进行此操作并猜测由于安全策略而无法实现.我发布了我最终想出的解决方案作为这个问题的答案.
我在画布中放置了很多UI元素.其中一些不应该处理鼠标事件,而它们可以重叠并覆盖必须处理鼠标事件的其他元素.当鼠标事件发生时,我希望它通过所有不应该处理它的元素来到达可能被它们覆盖的元素,但是可以处理它.有没有办法做到这一点?
我需要在Silverlight项目中执行此操作,但也对WPF解决方案感兴趣.
unit-testing ×2
.net ×1
mocking ×1
scheduling ×1
security ×1
silverlight ×1
uac ×1
windows ×1
wpf ×1
xaml ×1