小编rob*_*t_d的帖子

如何在BDD/TDD中对私有方法进行单元测试?

我正在尝试根据行为驱动开发进行编程,该开发表明,如果不首先编写失败的单元测试,则不应编写任何代码行.

我的问题是,如何将BDD与私有方法一起使用?
我如何对私有方法进行单元测试?
有没有更好的解决方案:
- 首先将私有方法公开,然后在编写使用这些私有方法的公共方法时将其设为私有;
或者
- 在C#中使所有私有方法都在内部并使用InternalsVisibleTo属性.

tdd bdd unit-testing

15
推荐指数
5
解决办法
4021
查看次数

为什么Observer模式在C#中比在Ruby中复杂得多?

我读过Russ Olsen的"Ruby模式设计", 如何在Ruby中实现Observer模式.我注意到这种模式的Ruby实现比C#实现简单得多,例如Jesse Liberty和Alex Horovitz"Programming .NET 3.5"中显示的实现.

因此,我使用"Ruby中的设计模式"算法重写了"Programming .NET 3.5"Observer模式示例(pdf版本的第251页),两种实现的源代码都可以从上述网站下载.

下面是重写的例子,告诉我你的想法是什么?
我们真的需要使用事件和委托来使用C#中的Observer模式吗?


更新 阅读评论后,我想问一下这个问题:
除了使代码缩短之外,还有其他理由使用委托和事件吗?我不谈论GUI编程.

Update2 我终于明白了,委托只是一个函数指针,事件是委托的更安全版本,它只允许两个操作+ =和 - =.

我重写了"Programming .NET 3.5"示例:

using System;
using System.Collections.Generic;

namespace MyObserverPattern
{
    class Program
    {
        static void Main()
        {
            DateTime now = DateTime.Now;

            // Create new flights with a departure time and add from and to destinations
            CarrierSchedule jetBlue = new CarrierSchedule("JetBlue", now);
            jetBlue.Attach(new AirTrafficControl("Boston"));
            jetBlue.Attach(new AirTrafficControl("Seattle"));

            // ATCs will be notified of delays in departure time …
Run Code Online (Sandbox Code Playgroud)

c# ruby observer-pattern

4
推荐指数
2
解决办法
2024
查看次数

如何加快通过互联网将数据保存到数据库?

我正在使用C#,Entity Framework和SQL Server 2008 Express.
我通过互联网连接到数据库.
加快将数据保存/更新到数据库的最佳方法是什么?
将180条记录保存到数据库需要87秒.
将相同数量的记录保存到本地(在同一台计算机上)SQL Server上只需3.5秒.

对于我保存/更新的每个记录,我检查数据库中
是否存在具有此主键的记录,如果它不存在,我只需保存它,
如果它存在,我使用ObjectContext.ApplyCurrentValues(entitySetName,currentEntity)方法更新它.

c# entity-framework sql-server-2008

0
推荐指数
1
解决办法
620
查看次数