在搜索NUnit +依赖方法+测试执行顺序时,我已经在SO上阅读了无数的答案.每一个答案都表明,迫使单位测试的任何订单都是非常邪恶的.
我正在使用NUnit编写Selenium测试.所以我试图使用单元测试框架编写集成测试!
举一个集成测试的例子(这只是一个例子).我需要在继续其他测试之前创建一个有效的帐户.如果创建帐户失败,那么我想中止整个测试执行.
由于我不想依赖于字母顺序的测试和NUnit的真正精神,因此决定在进行任何进一步测试之前创建一个帐户.虽然由于两个核心原因它看起来不合适 -
我倾向于认为NUnit可能不适合处理Selenium测试.但如果不是Nunit那么我应该使用什么?
为什么TestDriven.Net不能用于我的gallio/mbunit测试?
我已经将TDD.Net与MbUnit v2一起使用并且没有任何问题,但是在我的新电脑上使用新的gallio版本时,它什么也没做.
从解决方案资源管理器中的tdd右键单击菜单,如果我"使用调试器进行测试",我会在屏幕底部的VS状态栏中显示"0传递,0失败,0跳过".
如果我右键单击我的夹具并做同样的事情,我得到
"The target type doesn't contain tests from a known test framework or a 'Main' method."
Run Code Online (Sandbox Code Playgroud)
如果我在单独的测试中执行它,看起来它没有运行SetUp,所以测试失败(但至少它运行)
我知道这听起来像这个问题,但我的注册表看起来是正确的.
如果我尝试从TDD.Net菜单运行NCover,没有任何反应(除了输出窗口闪烁)
当我用resharper"运行单元测试"时,它会将它们全部拾取并正确运行.
我使用Gallio/MbUnit 3.0.5.546,TDD.Net 2.18.2268,Resharper 4.1,VS 2k8 Pro 9.0.30729.1 SP,.Net 3.5 SP1,Windows Server 2k8(x86)
我试图弄清楚如何在用MbUnit/Gallio编写的单元测试中命中断点.我尝试运行Gallio.Icarus,将vs调试器连接到它,断点没有被击中.接下来我尝试从项目属性启动Gallio.Echo,但是在提供dll之后我收到了一条错误消息,说只有.exe可以测试.单元测试从Gallio.Icarus运行良好,但是,我无法调试它们.
谢谢!
我在Visual Studio 2008中安装了TestDriven.Net,当我从TD.Net运行mbunit测试时,我得到以下消息:
看起来你正在尝试执行Gallio/MbUnit单元测试.
对于Gallio v3.0.6 build 787/Gallio v3.1 build 313或更高版本(推荐):请确保包含"MbUnit.dll"参考的目录还包含Gallio的测试运行器文件('MbUnit.dll.tdnet','TDNet\Gallio.TDNetRunner.dll','Gallio.dll'等)
嗯.我还没有安装Gallio,这就是为什么它在抱怨.
我知道我现在可以轻松安装Gallio并完成它.但是,我真的想知道我是否可以在没有在每个开发人员的机器上安装Gallio的情况下运行这些测试.我可以在bin目录中包含几个dll以使其正常工作吗?
以前有人有过这方面的成功吗?
注意:我已按照上面信息中的说明操作,但无效.
谢谢!
我以为我理解MbUnit的并行测试执行是如何工作的,但是我看到的行为与我的怀疑有很大不同,我怀疑我错过了什么!
我有一组我希望同时运行的UI测试.所有测试都在同一个程序集中,分为三个不同的名称空间.所有测试都是完全独立的,所以我希望所有这些测试都有资格进行并行执行.
为此,我将以下内容放在AssemblyInfo.cs中:
[assembly: DegreeOfParallelism(8)]
[assembly: Parallelizable(TestScope.All)]
Run Code Online (Sandbox Code Playgroud)
我的理解是这种组件属性的组合应该考虑所有的测试[Parallelizable],并且测试运行器在执行期间应该使用8个线程.我的个别测试用[Test]属性标记,没有别的.它们都不是数据驱动的.
但是,我实际看到的最多使用了5-6个线程,这意味着我的测试运行时间比应该的时间长.
我错过了什么吗?我是否还需要做其他事情以确保跑步者正在使用我的所有8个线程?
NB无论我使用哪种跑步者,行为都是一样的.GUI,命令行和TD.Net跑步者的行为与上述相同,再次让我觉得我错过了什么.
编辑:正如评论中所指出的,我正在运行MbUnit的v3.1(更新2版本397).该文件表明,装配水平[parallelizable]属性是可用的,但它似乎也参考框架V3.2尽管尚未可用.
编辑2:为进一步澄清,我的组装结构如下:
assembly
- namespace
- fixture
- tests (each carrying only the [Test] attribute)
- fixture
- tests (each carrying only the [Test] attribute)
- namespace
- fixture
- tests (each carrying only the [Test] attribute)
- fixture
- tests (each carrying only the [Test] attribute)
- namespace
- fixture
- tests (each carrying only the [Test] attribute) …Run Code Online (Sandbox Code Playgroud) 我有一些旧的MbUnit代码,如下所示:
public class MyFixture {
[SetUp]
public void SetUp() {
// Add data to database
}
[Test, Rollback]
public void DoTest() {
// Tests with the data
}
}
Run Code Online (Sandbox Code Playgroud)
我新的NUnit Rollback属性看起来有点像这样:
public class RollbackAttribute : TestActionAttribute
{
public override void BeforeTest(TestDetails testDetails)
{
// Begin transaction
}
public override void AfterTest(TestDetails testDetails)
{
// Abort transaction
}
}
Run Code Online (Sandbox Code Playgroud)
回滚应回滚SetUp方法中添加的新数据以及测试期间的任何修改.不幸的是,似乎NUnit的BeforeTest在fixture的SetUp方法之后运行,因此在SetUp期间添加的数据不会回滚.
有没有办法在SetUp之前运行BeforeTest?
一个选项是基类,并用SetUp和TearDown中的其他代码替换现有的Rollback属性,但是我的一些测试需要在事务外部运行(它们在测试运行期间自己创建多个事务),因此在所有测试中添加事务案件需要一点点照顾.我宁愿找到一个可以重用现有Rollback属性的解决方案.
如果我安装Gallio 3.x还会为Visual Studio安装一个测试运行器插件吗?
或者我是否必须使用其他插件(如TestDriven.NET或Visual Nunit)从VS中运行MbUnit测试类?
我正在从MbUnit迁移到xUnit,我正在尝试找到MbUnit [CombinatorialJoin]和的等效属性(或方法)[Column].
例如,在测试具有多个布尔参数的函数的常见行为时,[Column]可以非常轻松地测试排列:
public void TestMethodWithTooManyOptions([Column(true, false)] bool dispose,
[Column(true, false)] bool useDestinationStream,
[Column(true, false)] bool useCorruptedSource,
[Column(true, false)] bool loadTwice,
[Column(true, false)] bool useSourceStream) {
Run Code Online (Sandbox Code Playgroud)
[CombinatorialJoin],[SequentialJoin],[PairwiseJoin]如何影响列(或行)进行置换.
有没有人有任何经验让MSTest正确地将hibernate.cfg.xml复制到输出目录?我的所有MSTests都失败了,找不到hibernate.cfg.xml错误(我将它设置为Copy Always),但我的MBUnit测试通过了.
我正在使用Resharper 4.5和Visual Studio 2008以及MBUnit测试,使用ReSharpher运行测试似乎有些奇怪.
在侧面,每个测试方法旁边都有图标,其中包含Run和Debug选项.当我选择Run它时,只显示单次测试的结果.但是我注意到测试需要相当长的时间才能运行.
当我运行Sql Server探查器并开始逐步执行代码时,我意识到它不仅运行所选的测试,而且还运行了类中的每一个.是否有任何理由让它看起来像只运行一个单元测试而实际运行它们?
当我只关心一个集成测试时,它会等待所有集成测试的痛苦,有没有办法改变它?
mbunit ×10
gallio ×5
c# ×2
nunit ×2
unit-testing ×2
.net ×1
deployment ×1
mstest ×1
ncover ×1
nhibernate ×1
plugins ×1
pnunit ×1
resharper ×1
xunit ×1