类似于TDD是否意味着不考虑课堂设计?,我无法思考传统的"设计"阶段适合TDD的地方.
根据保龄球游戏Kata("对话"版本,其链接逃脱了我的目前),TDD似乎忽略了早期做出的设计决定(丢弃框架对象,滚动对象等).我可以在这个例子中看到,遵循测试并忽略你最初的设计思路是一个好主意,但是在更大的项目或者你想要为扩展/定制留下空间的那些项目中,放入的东西不是更好您没有立即测试或不需要立即测试,以避免以后进行耗时的重写?
简而言之 - 在进行TDD时设计的数量是多少,在编写测试和传递它们的代码时我应该遵循该设计多少(忽略我的设计只是担心通过测试)?
或者我担心什么都没有,如果你被画到一个角落,那么简单地编写代码来编写代码并不是(在实践中)难以重写或重构?或者,我是否错过了这一点,当我来测试新的功能部分时,我应该期望重写部分代码?
我有一个项目,我正在尝试学习单元测试和TDD实践.我发现我遇到了一些令人困惑的案例,我花了很长时间为一个几乎无处不在的实用工具类设置模拟.
从我读到的关于单元测试的内容来看,如果我正在测试MyClass,我应该嘲笑任何其他功能(例如由UtilityClass提供).是否可以接受(假设UtilityClass本身有一套全面的测试)只使用UtilityClass而不是为所有不同的测试用例设置模拟?
编辑:我正在进行大量设置的事情之一.我正在建模地图,不同位置的不同对象.我的实用程序类的常用方法之一是GetDistanceBetween.我正在测试根据各自属性对事物产生影响的方法,例如,选择5个单位中的所有对象且年龄超过3的测试将需要多次测试(获取范围内的旧对象,忽略旧对象)范围,忽略范围内的年轻对象,每个案例的倍数正确工作)所有这些测试需要设置'GetDistanceBetween'方法.将每个使用GetDistanceBetween的方法(几乎每一个)与该方法在不同情况下应该返回的不同结果相乘,并且它会得到很多设置.
我可以看到,当我进一步开发时,可能会有更多实用程序类调用,大量对象以及这些模拟实用程序类上的大量设置.
我在 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 连接时 - 错误消失了。直到几天前,这种情况从未发生过。
我最近听说过很多关于PowerShell的事情,并且想知道是否有任何理由使用PowerShell而不是(例如)控制台应用程序或在幕后使用WMI的Windows服务.
PowerShell有哪些优点和优势?它是为了什么?
我是WPF和MVVM的新手,所以如果这是一个愚蠢的问题,我会先请求原谅.
问题:我正在尝试使用MVVM设计模式创建一个分组的项目列表.我可以用代码来做,但更喜欢更优雅的解决方案.
细节
目标:在一个包装面板中,我想创建分组切换按钮.例如,对于在北美发现的每种动物,将会有一个带有ToggleButtons的"北美"GroupBox.接下来,会有一个标题为"非洲"的GroupBox,而组合框内则是非洲的所有动物.
使用MVVM设计模式,我可以绑定到ObservableCollection,并使用数据模板创建我需要的切换按钮.在我挣扎的地方,我不知道如何将动物分组.我需要的只是指导方针.任何帮助,将不胜感激.
我注意到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但我得到了相同的结果.
为什么这两种方法不能给出相同的结果?
在VB.NET中,完全可以将一个整数作为字符串参数传递给方法而不调用.ToString()
- 甚至可以在.ToString
没有()的情况下调用它.代码将运行没有问题,VB将整数解释为字符串而没有被告知.
在C#中,这些会导致编译错误 - .ToString()
在编译之前,您需要调用并在该情况下正确调用它.
有没有办法让VB编译过程检查与C#编译过程相同的东西?在混合团队中强制进行此检查是最佳做法吗?
我正在构建一个类项目(单独的dll),它将包含各种帮助方法和常用功能,可以被一系列不同的应用程序访问 - ASP.NET网站,Web服务和Windows服务.
有没有办法让这个中立类可以确定调用它的应用程序的类型(例如,它可以选择如何记录信息)?
关于什么应用程序调用它的类,还有哪些"元"信息可供使用?
当使用具有List或类似类型的只读属性的自定义类(即ObservableCollection)时,仍然可以"获取"变量并在其上调用Add()方法来更改内容.
有没有办法在"外部"访问中阻止这种情况(不会产生List类的巨大重载),或者如果不应该在类之外编辑它们,以另一种方式处理列表是"最佳实践"吗?