小编pet*_*bil的帖子

您如何使用TDD设计复杂系统?

类似于TDD是否意味着不考虑课堂设计?,我无法思考传统的"设计"阶段适合TDD的地方.

根据保龄球游戏Kata("对话"版本,其链接逃脱了我的目前),TDD似乎忽略了早期做出的设计决定(丢弃框架对象,滚动对象等).我可以在这个例子中看到,遵循测试并忽略你最初的设计思路是一个好主意,但是在更大的项目或者你想要为扩展/定制留下空间的那些项目中,放入的东西不是更好您没有立即测试或不需要立即测试,以避免以后进行耗时的重写?

简而言之 - 在进行TDD时设计的数量是多少,在编写测试和传递它们的代码时我应该遵循该设计多少(忽略我的设计只是担心通过测试)?

或者我担心什么都没有,如果你被画到一个角落,那么简单地编写代码来编写代码并不是(在实践中)难以重写或重构?或者,我是否错过了这一点,当我来测试新的功能部分时,我应该期望重写部分代码?

tdd unit-testing

11
推荐指数
2
解决办法
2436
查看次数

使用'真实'实用程序类而不是在TDD中进行模拟是否可以接受?

我有一个项目,我正在尝试学习单元测试和TDD实践.我发现我遇到了一些令人困惑的案例,我花了很长时间为一个几乎无处不在的实用工具类设置模拟.

从我读到的关于单元测试的内容来看,如果我正在测试MyClass,我应该嘲笑任何其他功能(例如由UtilityClass提供).是否可以接受(假设UtilityClass本身有一套全面的测试)只使用UtilityClass而不是为所有不同的测试用例设置模拟?

编辑:我正在进行大量设置的事情之一.我正在建模地图,不同位置的不同对象.我的实用程序类的常用方法之一是GetDistanceBetween.我正在测试根据各自属性对事物产生影响的方法,例如,选择5个单位中的所有对象且年龄超过3的测试将需要多次测试(获取范围内的旧对象,忽略旧对象)范围,忽略范围内的年轻对象,每个案例的倍数正确工作)所有这些测试需要设置'GetDistanceBetween'方法.将每个使用GetDistanceBetween的方法(几乎每一个)与该方法在不同情况下应该返回的不同结果相乘,并且它会得到很多设置.

我可以看到,当我进一步开发时,可能会有更多实用程序类调用,大量对象以及这些模拟实用程序类上的大量设置.

tdd unit-testing

11
推荐指数
3
解决办法
2909
查看次数

调用者在使用 GMail API 时没有权限错误

我在 Google App Engine 上运行的 django 网站上出现 500 服务器错误。当我查看 Google App Engine 日志时,我看到以下错误:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest returned "The caller does not have permission">

当我硬刷新浏览器时,这个错误就会消失。然后过了一段时间它又弹回来了。发生在移动设备(firefox、safari)、笔记本电脑(firefox、chrome)上。

更新:

在 Django settings.py 中,我有以下代码。它的最后一行生成错误:

pickle_path = 'token.pickle'  # path to token.pickle
with open(pickle_path, 'rb') as token:
    creds = pickle.load(token)
SERVICE = build('gmail', 'v1', credentials=creds)  # ERROR LINE
Run Code Online (Sandbox Code Playgroud)

当我在本地运行 django 服务器时:出现以下错误:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest returned "The caller does not have permission">
Run Code Online (Sandbox Code Playgroud)

当我从终端重新启动 cloud sql 连接时 - 错误消失了。直到几天前,这种情况从未发生过。

django google-app-engine gmail-api

11
推荐指数
1
解决办法
848
查看次数

我什么时候会使用PowerShell而不是传统应用程序?

我最近听说过很多关于PowerShell的事情,并且想知道是否有任何理由使用PowerShell而不是(例如)控制台应用程序或在幕后使用WMI的Windows服务.

PowerShell有哪些优点和优势?它是为了什么?

windows powershell

9
推荐指数
2
解决办法
1247
查看次数

使用MVVM对集合进行WPF分组

我是WPF和MVVM的新手,所以如果这是一个愚蠢的问题,我会先请求原谅.

问题:我正在尝试使用MVVM设计模式创建一个分组的项目列表.我可以用代码来做,但更喜欢更优雅的解决方案.

细节

  • 假设我有一系列动物:马,狼,猴子,老虎,北极熊,斑马,蝙蝠等.
  • 这些动物按大洲分组:北美洲,非洲,南极洲等.

目标:在一个包装面板中,我想创建分组切换按钮.例如,对于在北美发现的每种动物,将会有一个带有ToggleButtons的"北美"GroupBox.接下来,会有一个标题为"非洲"的GroupBox,而组合框内则是非洲的所有动物.

使用MVVM设计模式,我可以绑定到ObservableCollection,并使用数据模板创建我需要的切换按钮.在我挣扎的地方,我不知道如何将动物分组.我需要的只是指导方针.任何帮助,将不胜感激.

.net c# wpf observablecollection mvvm

9
推荐指数
1
解决办法
1万
查看次数

新DateTime()和DateTime.Parse的结果不同

我注意到C#的单元测试中有一些奇怪的行为.

给出以下代码:

var dateTime = DateTime.Parse("01/01/2015");
Assert.AreEqual(dateTime, new DateTime(2015, 1, 1));
Run Code Online (Sandbox Code Playgroud)

我得到一个失败的测试结果:

Expected: 2015-01-01 00:00:00.000
But was:  01/01/2015 00:00:00 +00:00
Run Code Online (Sandbox Code Playgroud)

我试过调用ToString()两者,传入CultureInfo.CurrentCulture并在新的DateTime调用上将DateKind设置为Local和UTC但我得到了相同的结果.

为什么这两种方法不能给出相同的结果?

c# datetime

8
推荐指数
1
解决办法
297
查看次数

你能否像C#一样严格地进行VB.NET编译?

在VB.NET中,完全可以将一个整数作为字符串参数传递给方法而不调用.ToString()- 甚至可以在.ToString没有()的情况下调用它.代码将运行没有问题,VB将整数解释为字符串而没有被告知.

在C#中,这些会导致编译错误 - .ToString()在编译之前,您需要调用并在该情况下正确调用它.

有没有办法让VB编译过程检查与C#编译过程相同的东西?在混合团队中强制进行此检查是最佳做法吗?

c# vb.net compiler-construction

4
推荐指数
1
解决办法
964
查看次数

.NET类有什么信息可以调用它?

我正在构建一个类项目(单独的dll),它将包含各种帮助方法和常用功能,可以被一系列不同的应用程序访问 - ASP.NET网站,Web服务和Windows服务.

有没有办法让这个中立类可以确定调用它的应用程序的类型(例如,它可以选择如何记录信息)?

关于什么应用程序调用它的类,还有哪些"元"信息可供使用?

.net assemblies class

3
推荐指数
2
解决办法
140
查看次数

列表类型绕过ReadOnly属性?

当使用具有List或类似类型的只读属性的自定义类(即ObservableCollection)时,仍然可以"获取"变量并在其上调用Add()方法来更改内容.

有没有办法在"外部"访问中阻止这种情况(不会产生List类的巨大重载),或者如果不应该在类之外编辑它们,以另一种方式处理列表是"最佳实践"吗?

.net oop list

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