0
我最近登上了Pex &鼴鼠的行列,以便測試一些邏輯,其中包含許多靜態,非虛擬,密封等元素。最近,我已經開始看到我無法從一些測試。爲什麼在單獨運行時使用HostType(「Moles」)進行單元測試時斷言,但在運行一組測試時失敗?
接口的兩個方法存根返回void,因此我將存根設置爲更新布爾變量的委託以表示它們已被調用。以下是我在做什麼:
[TestMethod]
[HostType("Moles")]
public void UnitTestX()
{
bool disposeCalled = false;
bool getCalled = false;
ClassX classX = new ClassX();
var data = new SIClassXData
{
Dispose =() => disposeCalled = true,
Get =() => getCalled = true,
ClassXGet =() => classX
};
MDataLayerFactory.CreateDataLayerObject(() => (IClassXData)data);
Assert.IsTrue(disposeCalled);
Assert.IsTrue(getCalled);
}
無論出於何種原因,如果我單獨運行這個測試,斷言會成功。但是,如果我在程序集中運行測試以及其他所有測試(使用Visual Studio的「在解決方案中運行所有測試」功能),則第一個斷言失敗。
我想知道爲什麼發生這種情況,以及我需要更改以解決問題。
DataLayerFactory是一個有狀態的服務嗎?在這種情況下,測試用例可能會導致系統處於失敗狀態 - 但不會孤立地失敗。 – Peli 2010-10-15 03:29:23
@PeliLayerFactory是一個靜態類,沒有任何東西可以保持狀態。 – 2010-10-15 14:54:00
僅供參考 - 一般來說,我們不會積極跟蹤Pex/Moles上的stackoverflow問題/答案(也許我們應該,但現在不需要) – Peli 2010-11-01 14:36:31