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