Tag: 测试

测试没有预期的exception

我想创建NUnit测试以确保我的函数不会抛出exception。 是否有一些特定的方法来做,或者我应该写 [Test] public void noExceptionTest() { testedFunction(); } 如果没有抛出exception,它会成功吗?

如何测试线程安全

您对如何测试multithreading应用程序有什么建议吗? 我知道,线程错误很难捕获,它们可能随时发生 – 或者根本不发生。 测试很困难,结果永远不会确定。 当然最好仔细设计和编程并发模块。 尽管如此 – 我不想忽略测试方面。 因此,运行大量同时处理相同项目的线程有时会调用线程错误。 任何想法或最佳实践,以获得隐藏线程错误的高命中率? (我正在使用.Net / C#)

在C#中模拟非虚方法

我正在尝试测试我使用模拟制作的一些类,但我已经看到c#中的所有免费模拟框架都无法模拟非虚方法(如果它不在接口中)。 但是,TypeMock可以做到这一点,所以它是可能的。 任何人都可以展示如何做到这一点? 如果我能做到这一点,我甚至可以尝试为开源框架做贡献。 提前致谢

如何并行运行NUnit(Selenium Grid)测试?

我当前的项目使用NUnit进行unit testing并驱动用Selenium编写的UAT。 开发人员通常在VS.Net 2003中使用ReSharper的测试运行器运行测试,我们的构建盒通过NAnt将其踢出。 我们希望并行运行UAT测试,以便我们可以利用Selenium Grid / RC,以便它们能够更快地运行。 有没有人对如何实现这一点有任何想法? 和/或针对多个浏览器环境测试Selenium测试而不自动编写重复测试的最佳实践? 谢谢。

什么是从多个线程进行unit testing的最佳方法?

这是从我的另一个问题开始的。 基本上,一旦我有代码访问该文件(将在一分钟内审查答案)什么是最好的测试方法? 我正在考虑创建一个方法,它只生成大量的BackgroundWorker或者其他东西并告诉他们所有加载/保存文件,并测试不同的文件/对象大小。 然后,从线程中获取响应以查看它是否失败/成功/使世界崩溃等。 你能提出任何关于最佳方法的建议吗? 正如我之前所说,这对我来说有点新鲜:) 编辑 关注ajmastrean的post: 我正在使用控制台应用程序来测试Debug.Asserts 🙂 更新 我最初使用BackgroundWorker来处理线程(因为我已经习惯了来自Windows开发)我很快就意识到当我执行多个操作(线程)需要在继续之前完成的测试时,我意识到它将会是让它做到这一点有点破解。 然后我跟进了ajmastrean的post并意识到我应该使用Thread类来处理并发操作。 我现在将使用这种方法进行重构(虽然是一种不同的方法)。

如何在测试期间处理陈旧的索引?

我在内存模式下使用RavenDB进行unit testing。 我的查询由静态索引支持。 我没有使用WaitForNonStaleResults() API(我也不想)。 测试的典型工作流程是: 在In-Memory模式下初始化RavenDB 使用IndexCreation.CreateIndexes(Assembly, IDocumentStore)集成索引 插入测试数据(用于validation查询行为) 运行查询 validation查询输出 我注意到步骤1-3发生得如此之快,静态索引没有时间在步骤4之前得到更新 – 因此索引是陈旧的。 我为此创建了一个快速的解决方案。 在第3步之后,我执行: while (documentStore.DocumentDatabase.Statistics.StaleIndexes.Length != 0) Thread.Sleep(10); 这感觉很麻烦。 我想知道的是: 在In-Memory模式下运行RavenDB时,索引是否过时是正常的? 在测试期间是否有更好的方法来避免过时的索引?

unit testing私有代码

我目前正参与使用C#进行开发 – 这里有一些背景知识:我们使用客户端应用程序实现MVP,并且我们有一个循环规则,该规则指出没有方法应该具有大于5的圈复杂度。这会导致许多小的私有方法这通常是一件事。 我的问题是关于unit testing一个类: 通过公共方法测试私有实现都很好……我没有遇到实现这个问题的问题。 但是……以下情况如何: 示例1.处理异步数据检索请求的结果(回调方法不应仅供公开测试) 示例2.执行操作的事件处理程序(例如更新View标签的文本 – 我知道的愚蠢示例……) 示例3.您正在使用第三方框架,它允许您通过覆盖受保护的虚拟方法进行扩展(从公共方法到这些虚拟方法的路径通常被视为黑盒编程,并且将具有框架提供的各种依赖性你不想知道) 上面的例子在我看来并不是设计不良的结果。 他们似乎也没有成为单独进行单独测试的候选人,因为这样的方法会失去他们的背景。 没有人对此有任何想法吗? 干杯,杰森 编辑:我认为我在原始问题中不够清楚 – 我可以使用访问器测试私有方法,并使用TypeMock模拟调用/方法。 那不是问题。 问题是测试不需要公开或不公开的东西。 我不想为了测试而公开代码,因为它可能会引入安全漏洞(只发布一个接口来隐藏它不是一个选项,因为任何人都可以将对象强制转换回其原始类型并获取访问权限我不希望他们) 被重构到另一个类进行测试的代码很好 – 但可能会失去上下文。 我一直认为让’帮助’类可以包含一堆没有特定上下文的代码是不好的做法 – (在这里思考SRP)。 我真的不认为这适用于事件处理程序。 我很高兴被certificate是错的 – 我只是不确定如何测试这个function! 我一直认为,如果它可以破坏或改变 – 测试它。 干杯,杰森

安装Visual Studio 11 beta后,不再通过Visual Studio 2010执行测试

我用Visual-Studio-2010 Ultimate创建了许多TestProjects。 所有测试都成功执行(它们是简单的unit testing)。 现在我安装了Visual-Studio-11 beta ,我意识到它们不是通过VS-2010执行的。 我也从命令行通过MSTest(2010)尝试了它,没有成功。 测试执行似乎开始(并且永远不会结束)但是在没有报告任何错误的情况下不执行测试。 通过VS-11一切正常。 有没有人有同样的问题?

如何使用两个WSDL并使用C#应用程序维护测试实例?

我创建了一个服务,通过C#使用他们的WSDL与SalesForce平台进行通信。 碰巧SalesForce(相当逻辑上)允许其平台的“沙盒”实例和其平台的“生产”实例。 我的应用程序旨在与生产一起使用,但我一直在使用沙箱进行集成测试和unit testing。 我现在已经到了需要部署到生产的地步。 但是,我遇到一个大问题,如果我需要构建和测试新function,我将不得不将WSDL从生产实例更新到沙箱实例,然后在添加新function时来回切换。 这是因为两个WSDL 完全不同 ,我必须从它们生成代码! 这不仅是草率的,而且是危险的。 我可能会影响我的一些实时系统数据。 我想找到一种方法来使用注册表项,文本值或一些配置设置来告诉我的应用程序使用哪个WSDL。 麻烦是? 我无法弄清楚人们如何接近这一点。 我的代码引用的对象是从该WSDL生成的。 有任何想法吗?

MSTest代码覆盖范围

如果我正在使用MSTest,有没有办法测试visual studio中的代码覆盖率? 或者我必须购买NCover? 如果微软不提供内置工具来进行代码覆盖,那么NCover Enterprise是否物有所值,或者旧的测试版是否足够好? 编辑:VS产品的描述以及哪些包括代码覆盖率https://www.visualstudio.com/vs/compare/ 如果您的VS版本不支持,可以使用TestDriven.NET( http://testdriven.net/ )。