小编Dav*_*ite的帖子

NUnit与Visual Studio 2010的MSTest?

我意识到有许多老问题解决了直到2008年的Visual Studio版本的 NUnit v MSTest的一般问题(比如这个).

微软有第三版正确的历史.对于MSTest,那就是VS2010.

他们是用MSTest完成的吗?你会在新项目中使用它而不是NUnit吗?

我的具体关注点:

  • 速度
  • 在CruiseControl.NET中运行测试(命令行或MSBuild任务)
  • 来自CC.NET的代码覆盖率报告
  • 你可以在调试模式下运行MSTest测试

(我们使用ReSharper,因此测试运行者对我们来说不是问题.过去几年我们使用过NUnit.我们没有TFS.)

cruisecontrol.net nunit mstest visual-studio-2010 visual-studio

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

单元测试MSBuild自定义任务没有"任务尝试在初始化之前记录"错误

我写了一些MSBuild自定义任务,这些任务运行良好,并在我们的CruiseControl.NET构建过程中使用.

我正在修改一个,并希望通过调用Task的Execute()方法对其进行单元测试.

但是,如果遇到包含的行

Log.LogMessage("some message here");
Run Code Online (Sandbox Code Playgroud)

它会抛出一个InvalidOperationException:

任务尝试在初始化之前进行记录.消息是......

有什么建议?(过去我在自定义任务上主要经过单元测试的内部静态方法,以避免出现此类问题.)

c# msbuild invalidoperationexception msbuild-task

26
推荐指数
4
解决办法
6782
查看次数

MSMQ v数据库表

现有流程响应用户输入更改表中预订记录的状态字段.

我有另一个要编写的进程,它将为具有特定状态的记录异步运行.它将读取表记录,执行一些操作(包括对第三方Web服务的调用),并更新记录的状态字段以指示处理已完成(或错误,错误计数).

此操作听起来非常类似于队列.在这种情况下使用MSMQ而不是SQL表有什么好处和权衡,为什么我要选择一个而不是另一个?

我们的软件是在表格中添加和更新记录.

这是一项将执行异步处理的新工作(Windows服务).这需要"永远向上".

sql msmq message-queue

23
推荐指数
3
解决办法
6495
查看次数

如何配置CruiseControl.NET以在远程服务器上构建一个项目

我有一个运行CruiseControl.NET的构建服务器.它适用于配置为在该服务器上运行的7个项目(让我们称之为服务器A).

现在我有一个新项目,我希望在不同的服务器(服务器B)上构建,但我希望它出现在与现有项目相同的ccnet仪表板中.

如何为此方案配置CCNet?

cruisecontrol.net build-server

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

Moq:如何断言我的模拟对象上的方法没有运行?

我有模拟工作,我测试我的模拟对象上的方法使用正确的参数调用,并返回正确的结果.

现在我想检查另一个条件.在这种情况下,应该对模拟对象运行NO方法.如何在单元测试中表达这一点?

unit-testing moq

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

项目引用v NuGet依赖项

我正在将NuGet引入我们的软件开发过程,包括外部二进制文件(例如Moq,NUnit)和包含共享功能的内部库项目.

TeamCity从我们的内部库项目生成NuGet包,并将它们发布到本地存储库.我修改的解决方案文件使用本地存储库来访问NuGet包.

请考虑以下源代码解决方案:

  1. Company.Interfaces.sln构建Company.Interfaces.1.2.3.7654.nupkg.
  2. Company.Common.sln通过其NuGet包包含对Company.Interfaces的引用,并构建Company.Common.1.1.1.7655.nupkg,其中包含Company.Interfaces.1.2.3.7654作为依赖项.
  3. Company.DataAccess.sln使用Company.Common nupkg添加Company.Interfaces和Company.Common作为参考.它构建 Company.DataAccess.1.0.8.7660.nupkg,包括Company.Common.1.1.1.7655作为依赖组件.
  4. Company.Product.A是一个网站解决方案,包含对所有三个库项目的引用(通过选择Company.DataAccess NuGet包添加).

问题:

如果对Company.Interfaces的源代码更改,我是否始终需要重新编号和重建中间包(Company.Common和Company.DataAccess)并更新Company.Product.A中的包?

或者这取决于源代码是否改变

  • 错误修复,或
  • 一个新功能,或
  • 突如其来的变化?

实际上,我有8级依赖库包.是否需要更新整个软件包树的工具支持?

我知道语义版本控制.

我们使用的是VS2012,C#4.0,TeamCity 7.1.5.

teamcity dependencies reference nuget

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

错误"找不到文件格式标题." 运行NuGet还原

我跑的时候

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,也是如此.

msbuild nuget-package-restore

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

如何解决SymbolSource Server Basic问题

我按照此博客条目中的说明安装并运行了SymbolSource Server Basic.

我可以成功地将包(*.nupkg和*.symbols.nupkg)从TeamCity推送到我的服务器而没有错误.但是,虽然NuGet端在Visual Studio中运行良好,但Symbol Server无法正常工作.我发现我的本地网站的Data文件夹包含我推送的标准NuGet包,但没有任何源代码的迹象.

我应该在哪里查找错误消息,或者我怎么知道为什么我的*.symbols.nupkg似乎没有被正确地推送到服务器?

debug-symbols symbol-server nuget-package nuget-server

5
推荐指数
0
解决办法
299
查看次数

F#如何标记用户输入:分隔数字,单位,单词?

我对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"等的单词)以及所有其他单词.

我的印象是我应该使用主动模式匹配 - 这是正确的吗? - 但我不确定如何开始.任何指向适当参考材料或类似示例的指针都会很棒.

f# pattern-matching

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

如何从F#列表中提取数据

我之前的问题之后,我慢慢得到了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# fparsec

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