我與C#工作在的Visual Studio 2015年社區,與NUnit3和犀牛嘲笑並試圖寫一個測試我的系統的一個組成部分(這不是一個單元測試)。不可能與TestCaseData運行測試產生從RhinoMocks存根
嘗試將生成的存根作爲提供給TestCaseSource
的TestCaseData
的參數時遇到問題。我得到在輸出窗口中出現以下錯誤:
Test adapter sent back a result for an unknown test case. Ignoring result for 'MyTest(Castle.Proxies.IMyInterfaceProxy4c6c716794ef48818f41fd5ead)'.
Test adapter sent back a result for an unknown test case. Ignoring result for 'MyTest(Castle.Proxies.IMyInterfaceProxy4c6c716794ef48818f41fd5ead)'.
測試名字,當我重新測試項目,但只要我嘗試運行它,它變成灰色出現在VS2015集成測試亞軍。
在這裏有根據我的測試代碼的一些示例代碼:
using NUnit.Framework;
using Rhino.Mocks;
using System.Collections;
namespace FenixLib.Core.Tests
{
public interface IMyInterface
{
int Property { get; }
}
[TestFixture]
class TestMocks
{
[Test, TestCaseSource("TestCases")]
public void MyTest(IMyInterface what)
{
// Do stuff
}
public static IEnumerable TestCases()
{
yield return new TestCaseData (CreateFake (2));
yield return new TestCaseData (CreateFake (4));
}
public static IMyInterface CreateFake (int something)
{
var fake = MockRepository.GenerateStub<IMyInterface>();
fake.Stub (x => x.Property).Return (something);
return fake;
}
}
}
我已經能夠如果我創建一個包裝生成的存根一個裝飾類克服的問題:
public class Decorator : IMyInterface
{
IMyInterface decorated;
public Decorator (IMyInterface decorated)
{
this.decorated = decorated;
}
public int Property
{
get
{
return decorated.Property;
}
}
}
並將return fake;
改爲return new Decorator (fake);
。一切正常,然後。
但是,在我的真實場景中,這有點痛苦,因爲我的界面不僅具有如本示例中的單個屬性,而且更復雜(並且我知道VS2015可以生成通過裝飾實現的代碼字段,但這不是重點)。另外,如果我最終要創建一個我不希望爲了測試目的而完全實現的接口的實現,那麼使用RinhoMocks是毫無意義的。
不管怎麼說,惹惱我是,我不明白爲什麼它不工作,因此我問:
誰能幫助我理解爲什麼沒有裝飾的代碼沒有工作?
好吧然後我猜如果我想要這個工作(使用RinhoMocks仍然有一些好處,因爲我必須創建不同的存根,而且我只需要一個裝飾類),分類類應該是行之有效的方法。 – racucad
我接受這個答案,因爲沒有其他人似乎在討論中加入任何東西。 – racucad
毫不奇怪。適配器下的易失性測試名稱問題非常模糊。 :-) – Charlie