我正在使用Machine.Specifications,我真的很烦恼VS2010/Resharper如何继续尝试格式化我的代码...例如:
Establish context = () => the_cartoon_repository = DependencyOf<INHibernateRepository<Cartoon>>();
Run Code Online (Sandbox Code Playgroud)
变成了:
private Establish context = () => the_cartoon_repository = DependencyOf<INHibernateRepository<Cartoon>>();
Run Code Online (Sandbox Code Playgroud)
我按下回车键.哎呀!必须要解决这个问题,不是吗?
我正在尝试使用Gallio在Visual Studio的测试系统中运行MSpec测试,但它似乎忽略了IDE中的MSpec插件.我做了什么:
这产生了以下错误
"没有运行任何测试,因为没有加载测试或禁用了选定的测试"
为了检查Gallio本身,我添加了对MbUnit的引用并创建了一个简单的MbUnit测试.我还运行了Gallio的其他工具来检查插件是否被拾取.我甚至重新启动了VS.
结果
运行测试使用Gallio.Echo或Gallio.Icarus成功执行都MbUnit的和MSpec测试,所以这个插件是被拾起.从Visual Studio运行测试运行MbUnit测试但不运行MSpec测试,因此Gallio集成似乎正在运行(而不是MSpec插件).有什么想法吗?
在任何人提到它之前:是的,我宁愿使用ReSharper,但目前我的情况不是许可证.
我在让ReSharper看到Machine.Specification"测试"时遇到了问题.
规范在mSpec的ConsoleRunner中运行.当我尝试在ReSharper中"运行单元测试"时,我收到一条消息:"文件中没有找到测试." 规格没有显示测试标记.
我在ReSharper/bin /文件夹中创建了一个文件夹,并将正确的.dll放在那里.mSpec插件出现在ReSharper中.
我可能会失踪什么?
另外,如果有所不同,我正在使用xUnit.NET.
我使用MSpec相对较新,因为我编写了越来越多的测试,显然减少重复,你经常需要根据Rob Conery的文章使用基类进行设置
我很高兴使用AssertWasCalled方法来验证我的期望,但是你在哪里设置了stub的返回值,我发现在基类中设置上下文注入我的依赖项很有用但是(我认为)意味着我需要在我觉得错误的因委托中设置我的存根.
我错过了更好的方法吗?
我在一些博客和讨论中看到mspec与nunit一起使用.事实上,我见过的网络上的大多数示例都展示了具有某种nunit依赖性或集成的mspec.我的团队正在尝试在新的ASP.NET MVC2项目中使用mspec而不使用nunit.我们还没有进入规范写作阶段,所以我不知道什么是更好的.你对此有何体验?将mspec与nunit一起使用有什么好处?没有?
我正在尝试开始使用纯TDD并考虑BDD风格.我试图掌握,与MSpec相比,写作单元测试的感觉与NUnit完全不同.
考虑一个简单的MSpec测试,如下所示:
[Subject("PersonRepository")]
class when_adding_a_new_person
{
Establish context = () => sut = new PersonRepository();
Because of = () => sut.AddPerson("Jim", "Panse");
It should_have_a_person = sut.Count.ShouldEqual(1);
It should_have_that_persion = sut.Contains("Jim", "Panse");
static PersonRepository;
}
Run Code Online (Sandbox Code Playgroud)
你如何以干净的方式将其转换为NUnit,但不使用任何BDD扩展或任何东西.我认为每个应该断言是一个可单独运行的测试Establish并且 Because应该只对所有断言执行一次是个好主意.我可以使用[Setup]的Establish和 Because,但会为每个测试运行.我可以用Assert.的It,但是这不会让他们单独运行的测试.
这个例子与NUnit风格相比如何?
我有一个RSSDataSourceParser完全由MSpec规范涵盖的类.我也有一个继承的类MultimediaRSSDataSourceParser.它完成所有父功能以及对iTunes RSS扩展的识别.我在单独的规范中介绍了扩展功能.
但是,阅读测试套件的业务人员只能看到扩展的规范MultimediaRSSDataSourceParser.他们也希望从中看到继承的功能RSSDataSourceParser.
复制这些规范听起来很荒谬,可能会导致未来的代码管理问题.有没有办法继承父母的规范?
作为BDD和MSpec的初学者,我仍然不太了解与BDD相关的最佳实践和良好习惯,特别是MSpec.
可以改进以下示例吗?它遵循最佳做法和良好习惯吗?
Establish这里吗?TestData方法)来获取测试数据还是应该在规范本身中创建数据?result.Equals()但我会测试两件事,这是不好的,对吧?请随意将示例重构为您认为更好的内容.
[Subject(typeof(DataItemReader))]
public class When_reading_a_DataItem_from_stream
{
Because of = () =>
{
using (var reader = new DataItemReader(
new MemoryStream(TestData.GetNormalDataItemAsByteArray()), Encryption.None))
{
result = reader.ReadItem();
}
};
Behaves_like<DataItemReader_that_reads_correctly> behavior;
protected static DataItem result;
}
[Subject(typeof(DataItemReader))]
public class When_reading_a_DataItem_from_encrypted_stream
{
Because of = () =>
{
using (var reader = new DataItemReader(
new MemoryStream(TestData.GetNormalDataItemAsByteArrayEncyrpted()), Encryption.Default))
{
result = reader.ReadItem();
}
};
Behaves_like<DataItemReader_that_reads_correctly> behavior;
protected static DataItem result;
} …Run Code Online (Sandbox Code Playgroud) 我最近完成了一个C#项目,并使用Machine.Fakes在MSpec上编写了测试.我一直在使用命令行运行器.在Visual Studio中查看测试结果/运行会更舒服.但是,ReSharper不在我的预算之内.有吸引力的选择吗?
我有一些测试代码执行文化感知转换的规范.我想为我的测试设置一个定义的文化,这样我就可以对预期的值进行硬编码,而不必担心运行测试的系统的配置文化.
有没有一种简单的方法可以使用Machine.Specifications来执行此操作,还是必须设置Thread.CurrentThread.CurrentCulture(也可能CurrentUICulture)?
mspec ×10
bdd ×3
c# ×3
resharper ×3
nunit ×2
comparison ×1
cultureinfo ×1
gallio ×1
rhino-mocks ×1
tdd ×1
unit-testing ×1
xunit.net ×1