我意识到有许多老问题解决了直到2008年的Visual Studio版本的 NUnit v MSTest的一般问题(比如这个).
微软有第三版正确的历史.对于MSTest,那就是VS2010.
他们是用MSTest完成的吗?你会在新项目中使用它而不是NUnit吗?
我的具体关注点:
(我们使用ReSharper,因此测试运行者对我们来说不是问题.过去几年我们使用过NUnit.我们没有TFS.)
cruisecontrol.net nunit mstest visual-studio-2010 visual-studio
我写了一些MSBuild自定义任务,这些任务运行良好,并在我们的CruiseControl.NET构建过程中使用.
我正在修改一个,并希望通过调用Task的Execute()方法对其进行单元测试.
但是,如果遇到包含的行
Log.LogMessage("some message here");
Run Code Online (Sandbox Code Playgroud)
它会抛出一个InvalidOperationException:
任务尝试在初始化之前进行记录.消息是......
有什么建议?(过去我在自定义任务上主要经过单元测试的内部静态方法,以避免出现此类问题.)
现有流程响应用户输入更改表中预订记录的状态字段.
我有另一个要编写的进程,它将为具有特定状态的记录异步运行.它将读取表记录,执行一些操作(包括对第三方Web服务的调用),并更新记录的状态字段以指示处理已完成(或错误,错误计数).
此操作听起来非常类似于队列.在这种情况下使用MSMQ而不是SQL表有什么好处和权衡,为什么我要选择一个而不是另一个?
我们的软件是在表格中添加和更新记录.
这是一项将执行异步处理的新工作(Windows服务).这需要"永远向上".
我有一个运行CruiseControl.NET的构建服务器.它适用于配置为在该服务器上运行的7个项目(让我们称之为服务器A).
现在我有一个新项目,我希望在不同的服务器(服务器B)上构建,但我希望它出现在与现有项目相同的ccnet仪表板中.
如何为此方案配置CCNet?
我有模拟工作,我测试我的模拟对象上的方法使用正确的参数调用,并返回正确的结果.
现在我想检查另一个条件.在这种情况下,应该对模拟对象运行NO方法.如何在单元测试中表达这一点?
我正在将NuGet引入我们的软件开发过程,包括外部二进制文件(例如Moq,NUnit)和包含共享功能的内部库项目.
TeamCity从我们的内部库项目生成NuGet包,并将它们发布到本地存储库.我修改的解决方案文件使用本地存储库来访问NuGet包.
请考虑以下源代码解决方案:
问题:
如果对Company.Interfaces的源代码更改,我是否始终需要重新编号和重建中间包(Company.Common和Company.DataAccess)并更新Company.Product.A中的包?
或者这取决于源代码是否改变
实际上,我有8级依赖库包.是否需要更新整个软件包树的工具支持?
我知道语义版本控制.
我们使用的是VS2012,C#4.0,TeamCity 7.1.5.
我跑的时候
Nuget.exe restore [path]\packages.config -PackagesDirectory [path]\build\packages
Run Code Online (Sandbox Code Playgroud)
它按预期工作.但是,命令
Nuget.exe restore [path]\bigpackages.config -PackagesDirectory [path]\build\packages
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
找不到文件格式标头.
即使我复制了packages.config文件并将其重命名为bigpackages.config,也是如此.
我按照此博客条目中的说明安装并运行了SymbolSource Server Basic.
我可以成功地将包(*.nupkg和*.symbols.nupkg)从TeamCity推送到我的服务器而没有错误.但是,虽然NuGet端在Visual Studio中运行良好,但Symbol Server无法正常工作.我发现我的本地网站的Data文件夹包含我推送的标准NuGet包,但没有任何源代码的迹象.
我应该在哪里查找错误消息,或者我怎么知道为什么我的*.symbols.nupkg似乎没有被正确地推送到服务器?
我对F#很新,但过去几周都在阅读参考资料.我希望处理用户提供的输入字符串,识别和分离组成元素.例如,对于此输入:
XYZ酒店:入住6晚,每晚220欧元,另加17.5%的税
输出应该类似于元组列表:
[("XYZ",Word); ("酒店:",Word);
("6",数字); ("夜晚",Word);
("at",运营商); ("220",数字);
("EUR",CurrencyCode); ("/",运营商); ("夜",Word);
("加",运营商); ("17.5",数字); ("%", 百分); ("税",Word)]
由于我正在处理用户输入,它可能是任何东西.因此,期望用户遵守语法是不可能的.我想识别数字(可能是整数,浮点数,负数......),度量单位(可选,但可以包括SI或Imperial物理单位,货币代码,例如"night/s"中的计数) ,数学运算符(作为数学符号或包括"at""per","of","discount"等的单词)以及所有其他单词.
我的印象是我应该使用主动模式匹配 - 这是正确的吗? - 但我不确定如何开始.任何指向适当参考材料或类似示例的指针都会很棒.
继我之前的问题之后,我慢慢得到了FParsec(虽然我觉得特别难以理解).
我的下一个新手F#问题是,如何从解析器创建的列表中提取数据?
例如,我将上一个问题中的示例代码加载到一个名为Parser.fs的模块中,并在一个单独的模块中添加了一个非常简单的单元测试(带有适当的引用).我正在使用XUnit:
open Xunit
[<Fact>]
let Parse_1_ShouldReturnListContaining1 () =
let interim = Parser.parse("1")
Assert.False(List.isEmpty(interim))
let head = interim.Head // I realise that I have only one item in the list this time
Assert.Equal("1", ???)
Run Code Online (Sandbox Code Playgroud)
交互式地,当我执行解析"1"时,响应是:
val it : Element list = [Number "1"]
Run Code Online (Sandbox Code Playgroud)
通过调整有效运算符列表,我可以运行解析"1 + 1"来获取:
val it : Element list = [Number "1"; Operator "+"; Number "1"]
Run Code Online (Sandbox Code Playgroud)
我需要替代我的??? 在上面的片段?我如何检查它是一个数字,而不是一个运算符等?
f# ×2
msbuild ×2
build-server ×1
c# ×1
dependencies ×1
fparsec ×1
moq ×1
msbuild-task ×1
msmq ×1
mstest ×1
nuget ×1
nuget-server ×1
nunit ×1
reference ×1
sql ×1
teamcity ×1
unit-testing ×1