Tag: pex

当测试具有主机类型“Moles”时,无法访问配置文件中的信息

当unit testing的主机类型为“Moles”时,我们在通过unit testing访问.net配置文件(例如app.config和web.config)中的信息时遇到问题。 这引起了不少令人头疼的问题,所以我希望有人知道可以做些什么。 我们正在使用Visual Studio 2010,我相信我们已经在安装了VS 2010 SP1的机器上安装了这个,并且没有安装SP1的机器,以及在32位和64位机器上尝试它。 我冒昧地将测试缩减到最简单的条件。 可以通过组合由以下两个文件组成的unit testing项目来重新创建该问题,并在取消注释唯一的注释行之后运行测试。 测试在没有主机类型的情况下工作,但是当您将Moles作为主机类型引入时,测试中的空断言将失败。 我们不确定为什么。 一,配置文件App.config: 接下来,包含单个测试的测试类: namespace TestProject { using System.Configuration; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class UnitTest { [TestMethod] //[HostType(“Moles”)] public void TestMethod() { var data = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); Assert.IsNotNull(data.ConnectionStrings.ConnectionStrings[“Connection”]); } } } 如果有人能提供任何见解,我将不胜感激。 非常感谢, 缺口

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”); } 失败的方法调用: […]

C#静态分析,变量/参数的可能值

在类似于以下每个示例的代码中,我希望能够静态分析代码以确定传递给SpecialFunction()的可能值列表。 SpecialFunction(5); // A int x = 5; SpecialFunction(x); // B int x = 5; x = condition ? 3 : 19; SpecialFunction(x); // C 我已经可以将C#解析成一个抽象语法树了,我已经可以处理像A这样的情况了,我想我可以跟踪值的初始赋值来猜测案例B,但像C一样简单的案例似乎很快就会变得复杂。 我几乎可以肯定,我们无法在所有情况下静态地解决x问题,这没关系。 我想知道尝试它的策略,以及识别何时无法完成的方法。 如果我们需要包含类级别字段和multithreading,该怎么办? 闭包? 如果我们知道x , |X| < 50的所有可能值的集合X ,它会有帮助吗? |X| < 50 ? 从@Vladimir Perevalov的建议来看,Pex中的概念如何应用于寻找目标代码点的可能值(而不是Pex似乎做的是发现代码路径和值导致未检查(?)exception情况)?

C# – “\ 0”等同于什么?

我正在玩Pex ,它传递给我的方法的参数之一是”\0″ 。 那是什么意思? 我的猜测是基于我的方法内容的空字符串( “” )。 但是,如果它是相同的,为什么不使用””而不是”\0″ ? 有人知道这是什么吗?