Tag: code contract

Contract.Requires抛出pex错误

可能重复: 如何配置Pex以尊重代码合同? 目前,当我运行pex探索时,我在我的类中创建的代码契约被视为pex探索结果中的错误。 我认为当你使用代码合同进行pex勘探时,合同失败应该被视为预期的行为。 这是导致exception的代码。 测试方法: [PexMethod] public void TestEquality(Guid userId, string username, string password, string securityQuestion, string securityAnswer) { UserSecurity user = UserTools.CreateUser(Guid.NewGuid(), username, password, securityQuestion, securityAnswer); bool passwordResult = UserTools.VerifyInput(password, user.Password, user.PasswordSalt); bool securityAnswerResult = UserTools.VerifyInput(securityAnswer, user.SecurityAnswer, user.SecurityAnswerSalt); Assert.IsTrue(passwordResult, “Password did not correctly re-hash”); Assert.IsTrue(securityAnswerResult, “Security Answer did not correctly re-hash”); } 失败的方法调用: […]

代码契约:抽象类中的不变量

我在使用带有代码约定的不变量时遇到了问题。 我想在我的抽象类中定义一个Invariant,但它只是被忽略了。 下面的代码显示了我的界面和抽象类。 [ContractClass(typeof(IPointContract))] interface IPoint { int X { get; } int Y { get; } } [ContractClassFor(typeof(IPoint))] abstract class IPointContract : IPoint { public int X { get { return 0; } } public int Y { get { return 0; } } [ContractInvariantMethod] private void PointInvariant() { Contract.Invariant(X > Y); } } […]

我错误地实施了这个简单的合同吗?

这是我的代码: public class RegularPolygon { public int VertexCount; public double SideLength; public RegularPolygon(int vertexCount, double sideLength) { Contract.Requires(vertexCount >= 3); VertexCount = vertexCount; SideLength = sideLength; } [ContractInvariantMethod] private void RegularPolygonInvariants() { Contract.Invariant(VertexCount>=3); } } 我尝试使用Contract.Requires和Contract.Invariant方法来防止vertexCount变量小于或等于2; 但是我仍然能够初始化一个具有2个或更少边的RegularPolygon。 我的(简化)NUnit测试如下所示: [TestFixture] class TestRegularPolygon { private RegularPolygon _polygon; [SetUp] public void Init() { _polygon = new RegularPolygon(1, 50); […]