对大量依赖数据库的.NET中间件进行单元测试的最佳方法是什么?例如,从多个数据库读取数据,操作它,然后将其组合并写入其他数据库的过程?
数据库是否应填充静态数据,这些数据在每次单元测试运行时都会重置?是否应该以某种方式模拟整个SQL Server访问?在现实世界中对这样的应用进行单元测试是否不可行?
开发人员可以从其他行业中学到很多东西.作为思考练习,是否可以使用敏捷技术建造客机?
忘记现在的成本; 对硬件(机身,机翼等)以及软件使用迭代和增量开发是否可行,并且仍然提供一种在交付时满足客户要求的工作和安全产品?
重构飞机是否有意义?
Team Foundation Server(TFS)2005和2008都会在文件分支和合并时丢失历史记录(签入+注释).因此,例如,如果分支中的更改然后合并回根分支,则分支中所做的任何更改都不会在根分支中可见.历史中唯一可见的事情表明发生了合并.
有没有人知道是否有一个选项可以设置为保留历史记录,或者以不同的方式进行合并以保留历史记录?
假设您有四种产品,每种产品都有自己的发布时间表.每种产品都有50%的共享代码(所有产品的通用功能)和50%的产品特定代码.
您是否需要为每个产品单独的源控制分支?是否应始终在四个产品分支之一中开发通用功能,并在以后合并到其他产品中?
典型场景:产品A将在下个月发布,需要核心(共享)增强1,产品B将在四个月内发布,并需要核心(共享)增强2(需要三个月才能完成).
想象一下,你有一个用户故事1需要实现一个方法:
public static void MyMethod(string paramA);
Run Code Online (Sandbox Code Playgroud)
有几个类将使用此方法,MyMethod会完成完成用户故事1所需的所有操作,但仅此而已.
您很确定在将来的迭代中会出现另一个故事(用户故事2),这将需要该方法成为:
public static void MyMethod(string paramA, int paramB);
Run Code Online (Sandbox Code Playgroud)
之前对MyMethod的调用需要重构,并且需要添加一些对MyMethod的新调用以满足用户故事2的要求(在故事2之后注意,仅使用paramA调用MyMethod是没有意义的).
在处理用户故事1时,敏捷思考:
1)只实现:public void MyMethod(string paramA);
2)实现:public void MyMethod(string paramA,int paramB); - 但现在对第二个参数不做任何事情.此时调用将0传递给第二个参数.
3)实现:public void MyMethod(string paramA,int paramB); - 但现在对第二个参数不做任何事情.呼叫传递正确的值(根据用户故事2的期望)
4)实现:public void MyMethod(string paramA,int paramB); - 所有电话完全覆盖用户故事1和2
我需要保存一个设置,然后该设置可供给定计算机上的所有应用程序用户使用.它需要在Vista/Win 7上运行,并且该应用程序不会以管理员身份启动.
我在哪里可以保存数据?即使应用程序权限在执行期间以某种方式提升,我担心注册表现在在Vista中虚拟化 - 所以我最终会得到一个特殊的HKEY_LOCAL_MACHINE,它实际上只适用于当前用户.
我正在使用.NET
想象一下,你为一家小型精益软件公司工作.您知道公司未来的竞争力在于拥有良好的可重用代码库.管理公司的再利用政策以确保您今天的交付,同时为未来提供支持,这将是非常重要的.
在我看来,在业务中编写可重用代码有两个原因; 1)在公司内共享以提高未来的速度和效率2)在网络上发布和其他人将有助于改进代码(从某种意义上说是众包).
开发人员应该始终运用常识来重复使用.但是为了从管理角度处理这个问题,我想要一些整体的代码重用指南,以确保我们现在和将来都具有竞争力.这些指南应鼓励开发人员询问"我的代码是否为重用候选人?".这些指导方针应该说什么?
我最初的想法:在最低级别编写可重用的代码是不值得的(例如,我有一些内联代码在字符串的末尾添加了一个"s"),这个代码的代码太多了.甚至筛选,发现有人已经做过了.在最顶层(即应用程序)编写可重用代码也是不值得的,因为您的客户报告应用程序最终会被通用化为SQL客户端 - 对大多数用户来说是无用的.
可重复使用代码的主要障碍:除非您知道它存在,否则不能重复使用它; 信任 - 它已经完成,但你相信吗?使代码通用/可重用(并记录)的初始时间.
看看我在使用敏捷建造飞机的问题中的评论总趋势,除成本之外的最大问题似乎是安全性.
人们是否觉得使用敏捷建立一个安全系统(或证明它是安全的)是不可能的?并非所有的迭代测试都能缓解这个问题吗?使用敏捷开发的软件是否可能永远不会像瀑布那样可靠?
agile ×4
.net ×2
tfs ×2
unit-testing ×2
branch ×1
c# ×1
code-reuse ×1
reliability ×1
scrum ×1
sql-server ×1
svn ×1
vb.net ×1
windows-7 ×1