2011-06-06 21 views
0

好吧,所以我有一個問題與JustMock,我希望有人在這裏可以幫助我。 我有一個類與幾個測試方法(類似80)。獨立運行時,這些方法中的每一種都將以優異的顏色通過。然而,我有一些方法,當作爲更大的測試運行(比如說整個班級)運行時會失敗。JustMock和大型測試運行的問題

這些測試方法使用JustMock mocking框架嘲弄非公共方法,然後調用調用每個私有方法的公共接口方法。 下面是當運行每個這些單獨它們通過,但是當作爲一組運行第一方法傳遞,第二個失敗的例子

///<summary> 
/// A test for CheckCommError 
///</summary> 
[TestMethod] 
public void CheckCommErrorWithErrorTest() 
{ 
    var message = new byte[] { (byte)EagleMessageTypes.SendCommError,BitConverter.GetBytes((ushort)10)[0], BitConverter.GetBytes((ushort)10)[1] }; 

    bool expected = false; // TODO: Initialize to an appropriate value 
    bool actual; 
    //mock the other members in EagleUtility that are being used... 
    var target = new EagleUtility(); 
    bool called = true; 
    Mock.NonPublic.Arrange<bool>(target, "CheckMinimumSize", ArgExpr.IsAny<BasicEagleMessage>(), Arg.AnyInt).IgnoreArguments().DoInstead(
     (BasicEagleMessage arg1, int arg2) => called = true).Returns(true).MustBeCalled(); 
    Mock.NonPublic.Arrange<bool>(target, "CheckMessageLength", Arg.AnyInt, ArgExpr.IsAny<BasicEagleMessage>()).IgnoreArguments().DoInstead(
     (int arg1, BasicEagleMessage arg2) => called = true).Returns(true).MustBeCalled(); 
    Mock.NonPublic.Arrange<bool>(target, "VerifyCheckSum", ArgExpr.IsAny<byte[]>()).IgnoreArguments().DoInstead(
     (byte[] arg1) => called = true).Returns(true).MustBeCalled(); 
    Mock.NonPublic.Arrange<bool>(target, "ValidateLegacyMessageType", ArgExpr.IsAny<BasicEagleMessage>()).IgnoreArguments().DoInstead(
     (BasicEagleMessage arg1) => called = true).Returns(true).MustBeCalled(); 
    actual = target.ValidateMessage(message, 3, TowerTypes.Tower4800); 
    Assert.AreEqual(expected, actual); 
    Mock.Assert(target); 
} 

///<summary> 
/// A test for CheckMessageLength 
///</summary> 
[TestMethod] 
public void CheckMessageLengthTest() 
{ 
    var message = new byte[] { (byte)3, BitConverter.GetBytes((ushort)59006)[0], BitConverter.GetBytes((ushort)59006)[1], 0 }; 
    var byteCount = 32486; 
    bool expected = true; 
    bool actual; 
    //mock the other members in EagleUtility that are being used... 
    var target = new EagleUtility(); 
    bool called = true; 
    Mock.NonPublic.Arrange<bool>(target, "CheckMinimumSize", ArgExpr.IsAny<BasicEagleMessage>(), Arg.AnyInt).IgnoreArguments().DoInstead(
     (BasicEagleMessage arg1, int arg2) => called = true).Returns(true).MustBeCalled(); 
    Mock.NonPublic.Arrange<bool>(target, "CheckCommError", ArgExpr.IsAny<BasicEagleMessage>()).IgnoreArguments().DoInstead(
     (BasicEagleMessage arg2) => called = true).Returns(true).MustBeCalled(); 
    Mock.NonPublic.Arrange<bool>(target, "VerifyCheckSum", ArgExpr.IsAny<byte[]>()).IgnoreArguments().DoInstead(
     (byte[] arg1) => called = true).Returns(true).MustBeCalled(); 
    Mock.NonPublic.Arrange<bool>(target, "ValidateLegacyMessageType", ArgExpr.IsAny<BasicEagleMessage>()).IgnoreArguments().DoInstead(
     (BasicEagleMessage arg1) => called = true).Returns(true).MustBeCalled(); 
    actual = target.ValidateMessage(message, byteCount, TowerTypes.Tower4800); 
    Assert.AreEqual(expected, actual); 
    Mock.Assert(target); 
} 

。根據我如何運行測試(哪個測試運行器),測試方法在不同的聲明上失敗,使用mstest,它在Asser.AreEqual上失敗,而使用JustCode測試器時,它在Mock.Assert上失敗(聲明標記爲MustBeCalled的方法未被調用)。

我有Mock.Initialize();在我的類初始化函數的測試類。

我很感激任何幫助,並提前謝謝大家。

回答

相關問題