Tag: unit testing

错误:“此提供程序无法使用空间类型和function”

我收到了错误: 空间类型和函数不适用于此提供程序,因为无法找到程序集“Microsoft.SqlServer.Types”版本10或更高版本。 我只在我的一台开发机器上出现此错误 – 另一方面,它正常工作。 两台机器都安装了SQL Server 2014,这应该足够了,但显然不是。 除此之外,我在解决方案中安装了nuget包“Microsoft.SqlServer.Types”(我已经在几个从属项目中尝试过了),并添加了相应的行来加载有问题的DLL: Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); 调试显示有问题的行执行,并踩到它,似乎有问题的DLL加载成功。 用于运行项目(unit testing组件)的同一台机器没有错误。 错误开始出现的时间与我将测试项目从MSTest切换到xUnit的时间差不多,所以它可能与此有关。 有什么建议可以排除故障吗

Dapper:unit testingSQL查询

我开始使用微型ORM的Dapper,我使用的是Dapper Rainbow。 我想测试查询和它们检索的数据。 我的意思是,例如,我有UserService和方法GetAll() ,我想测试sql查询是从一些列表中检索所有用户(而不是从数据库,因为我希望测试快速)。 你知道我怎么能这样做吗? 我的服务类(以及我想测试的方法): public static class UserService{ public static IEnumerable GetAll(){ return DB.Users.All(); } } 您对unit testing查询和数据检索有什么建议吗? 谢谢

NUnitunit testing具有“ExpectedException”但仍然在exception时失败

我有一个unit testing失败,因为抛出了System.ArgumentException ,即使我期待它并且它是故意的行为 – 我错过了什么? [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = “Seconds from midnight cannot be more than 86400 in 010100712386401000000012”)] public void TestParsingCustomReferenceWithInValidSecondsFromMidnight() { // I am expecting this method to throw an ArgumentException: CustomReference.Parse(“010100712386401000000012”); } 我也试过没有设置ExpectedMessage – 没有区别。

如何使用FakeItEasy伪造一个动作

我正在使用FakeItEasy库为我的unit testing创​​建假货。 我有一个ClassUnderTest ,我想在其上测试方法MethodToTest(Data dataObject) 。 这个方法调用一个我想伪造的接口的方法: public interface IFoo { void Execute(Action action); } public class ClassUnderTest { private IFoo _foo; public ClassUnderTest(IFoo foo) { _foo = foo; } public void MethodToTest(Data dataObject) { _foo.Execute(dataAccess => dataAccess.Update(dataObject)); } } public interface IDataAccess { void Update(Data data); } public class Data { public int Property […]

为什么我不能更改Rhino Mocks存根对象的返回值?

如果这是一个愚蠢的问题,请原谅我,但我在嘲笑方面相当新,并且我正试图解决它。 我有一些unit testing(使用内置的Visual Studio 2010 Professional测试function),它使用方法所需的存根。 我创建了一个存根,并设置了几个属性和方法的默认返回值,一切运行良好。 我有一个静态类来设置存根,这在TestInitialize方法中用于设置存根… public static AppointmentReminderProviderInterface GetMockProvider() { AppointmentReminderProviderInterface provider = MockRepository.GenerateStub(); provider.Stub(p => p.ContactName).Return(MockProviderContactName); provider.Stub(p => p.ContactEmail).Return(MockProviderContactEmail); return provider; } 请注意, MockProviderContactName和MockProviderContactEmail是本地字符串属性,包含提供程序的默认数据。 该单元检查以查看是否按照默认数据进行的操作都可以正常通过。 但是,我现在想测试当其中一个属性包含duff数据时会发生什么。 我以为我可以在存根上设置它,但它不起作用。 测试方法包含以下几行…… _provider.Stub(p => p.ContactEmail).Return(“invalid”); Debug.WriteLine(“Provider email: “); Debug.WriteLine()告诉我,尽管我已将ContactEmail属性设置为返回“invalid”,但它仍然返回默认的电子邮件地址。 这导致我的测试失败,因为我期望它抛出exception,但事实并非如此。 任何人都知道为什么我不能改变这个属性的返回值? 谢谢你的帮助。

CSV提供的第一列数据源中的奇数字符

我有一个CSV文件,我添加到Visual Studiounit testing项目。 它有七列,看起来像这样: assessmentitemid,reviewer1,reviewer2,reviewer3,reviewer4,reviewer5,reviewer6 我的测试方法如下所示: [TestMethod] [DeploymentItem(“IntraclassCorrelationValues.csv”)] [DataSource(“Microsoft.VisualStudio.TestTools.DataSource.CSV”, “|DataDirectory|\\IntraclassCorrelationValues.csv”, “IntraclassCorrelationValues#csv”, Microsoft.VisualStudio.TestTools.UnitTesting.DataAccessMethod.Sequential)] public void TestMethod1() { object val = TestContext.DataRow[“assessmentitemid”]; } 访问列assessmentitemid时,我收到一个错误。 我检查了表格,除了assessmentitemid以外,所有列都已正确映射。 它的实际列名是这样的: assessmentitemid 我是否还需要对DataSource属性执行其他操作才能正确解析CSV文件?

如果代码是为x86或任何CPU编译的,我的代码如何在运行时检测到

我有很多集成测试,可以读取文件的预期结果。 我的测试通过相对路径访问这些文件。 相对路径是x86与任何CPU的不同深度级别。 例如,当我的测试在x86下运行时,他们需要读取以下文件“../../TestResults/MyTest.csv”,但在任何CPU下他们需要访问“../TestResults/MyTest.csv” 到目前为止,我在每个测试夹具中都有以下常量: private const string platformDependentPrefix = “”; 如果我运行x86的测试,我需要在每个测试夹具中手动将“”更改为“../”。 有没有办法实现自动化?

使用AutoFixture为递归数据结构创建夹具

我正在开发一个项目,我有一些递归数据结构,我想为它创建一个夹具。 数据结构是XmlCommandElement ,它有一个方法ToCommand将XmlCommandElement转换为Command 。 树上的每个节点都可以是XmlCommandElement和/或XmlCommandPropertyElement 。 现在,为了测试ToCommand方法的行为,我想用一些任意数据获取XmlCommandElement 。 我想控制每个节点的树的深度和XmlCommandElement和/或XmlCommandPropertyElement的实例数量。 所以这是我用于灯具的代码: public class XmlCommandElementFixture : ICustomization { private static readonly Fixture _fixture = new Fixture(); private XmlCommandElement _xmlCommandElement; public int MaxCommandsPerDepth { get; set; } public int MaxDepth { get; set; } public int MaxPropertiesPerCommand { get; set; } public XmlCommandElementFixture BuildCommandTree() { _xmlCommandElement = new […]

使用FakeItEasy在方法中模拟方法

如何从另一个函数中调用的函数模拟/解析结果? 通常,Test2将是一个DataAccess方法,我不想获取真实数据。 我喜欢我测试的unit testing是业务逻辑。 这就是我现在拥有的,但它根本不起作用。 Sum总是断言为5! public int Test1() { var value = this.Test2(); //Unittest should substitute with 5 var businesslogic = value + 10; //The business logic return businesslogic; } public int Test2() { return 10; //I try to mock this value away in the test. Don´t go here! } 然后我有一个Unittest,我想在我的“业务逻辑”上运行。 [TestMethod()] public void […]

如何模拟LINQ to Entities助手,例如’SqlFunctions.StringConvert()’

我正在使用EF 4,并尝试使用Moq对以下行进行unit testing: var convertError = models .Where(x => SqlFunctions.StringConvert((decimal?) (x.convert ?? 0)) == “0”) .Any(); 并且看起来SqlFunctions.StringConvert()会在检测到上下文被SqlFunctions.StringConvert()时抛出。 它给出了一个错误说: 只能从LINQ到实体调用此函数 是否有可能告诉SqlFunctions.StringConvert返回一个模拟对象,以便我可以摆脱这个错误?