Tag: mstest

System.InvalidProgramException在Microsoft安全更新MS13-004之后在MSTest中执行unit testing时

在2013年1月8日应用Microsoft安全更新http://technet.microsoft.com/en-us/security/bulletin/ms13-004后,我们已经开始在我们的构建服务器和本地的CI构建中遇到故障在我们的开发盒上运行测试。 我们得到一个System.InvalidProgramException:公共语言运行时检测到一个无效的程序 。 这仅在使用使用Castle Windsor DynamicProxy的MSTest运行测试时才会发生,尽管我不相信DynamicProxy在这里有问题。 下面将生成一个生成exception的示例代码。 [TestMethod] public void ShouldBeAbleToGenerateADynamicProxyForAnObject() { var container = new WindsorContainer(); container.Register(Component.For()); container.Register(Component.For() .Instance(new TestDependency(“Called from test framework.”)) .LifeStyle.Transient); container.Register(Component.For() .ImplementedBy() .Interceptors(InterceptorReference.ForType()) .Anywhere .LifeStyle.Transient); var service = container.Resolve(); Assert.AreEqual(“Called from test framework.”, service.MethodNumberOne()); } 这会生成一个堆栈跟踪,最终会在DynamicProxy中调用MixinData构造函数时抛出exception: Castle.DynamicProxy.MixinData..ctor(IEnumerable`1 mixinInstances)Castle.DynamicProxy.ProxyGenerationOptions.Initialize()Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType,Type [] interfaces,ProxyGenerationOptions options)Castle.DynamicProxy.DefaultProxyBuilder。 CreateInterfaceProxyTypeWithTarget(Type interfaceToProxy,Type [] additionalInterfacesToProxy,Type targetType,ProxyGenerationOptions options)Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(Type interfaceToProxy,Type [] […]

取消测试后清理

我目前正在通过visual studio进行测试。 在运行所有测试之前,我会自动创建一组具有已知凭据的用户,并在运行结束时删除这些用户。 但是,有时我需要在中途取消我的测试。 在这些情况下,测试永远不会有机会进行清理,这意味着测试运行中遗留了虚假的用户信息,并可能导致下一次测试运行崩溃(当它尝试将用户信息添加到数据库中时)。 无论如何,即使测试被取消,还是强制visual studio / mstest运行清理方法? 我知道一个选项是进行测试检查并确保用户信息不存在,如果确实在创建新用户之前删除了它。 但这仍然无法解决取消测试运行的问题,从而留下不需要的测试数据。 更新: 对于错误传达很抱歉,但是在测试开始时清理数据不是一种选择。 我给出了一个非常简单的问题视图,但简单地说,我没有简单的方法来确保在测试开始时不存在测试数据。 所有清理工作必须在测试结束时进行。

如何在每个类测试后运行ClassCleanup(MSTest)?

我有几个带测试套件的课程。 每个测试类都从ClassInitialize开始,并由ClassCleanup完成。 我的问题是ClassCleanup没有在每个类的末尾调用,只有在三个类中的所有测试之后才调用它。 我能解决这个问题吗? 谢谢! [ClassInitialize] public static void SetUpBrowser(TestContext context) { pageObjectBase.SetBrowser(“chrome”); pagesManager.GetPageObjectBase(); } [TestMethod] public void FindCriticalBug() { bla-bla-bla(); } [ClassCleanup] public static void CloseBrowser() { pageObjectBase.Stop(); pagesManager.GeneralClearing(); }

在运行测试时如何获取unit testing来复制我的DLL和其他文件?

我正在开发一个应用程序,我已经为它创建了许多unit testing。 测试类的项目取决于3个第三方DLL。 当我转到测试项目的bin \ Debug文件夹时,Dlls就在那里。 但是当我运行测试时,DLL没有被复制到TestResult \\ Out文件夹中。 还有一个我希望复制的另一个项目的log4net.config文件。 这个没有出现在测试项目的bin \ Debug文件夹中,所以这是我必须解决的另一个问题。 运行unit testing时如何将这些文件复制? 托尼

MSTest显示复合布尔表达式的部分代码覆盖率

从微软的文档中,部分覆盖的代码是“……其中一些代码块未被执行。” 我对这个很难过(简化为简洁): 鉴于此方法: public List CodeUnderTest() { var collection = new List { “test1”, “test2”, “test3” }; return collection.Where(x => x.StartsWith(“t”) && x == “test2”).ToList(); } 而这个测试: [TestMethod] public void Test() { var result = new Class1().CodeUnderTest(); CollectionAssert.Contains(result, “test2”); } 代码覆盖率结果显示表达式x.StartsWith(“t”) && x == “test2仅被部分覆盖。我不确定这是怎么可能的,除非编译器或CLR有一些急切的条件匹配的东西,但也许我只需要解释一下。

如何在UnitTest中模拟/伪造SmtpClient?

我想用它来伪造MS-Test UnitTest中的System.Net.Mail.SmtpClient 。 因此我添加了一个Fizz Assembmly of System.dll。 然后我创建了一个ShimsContext和一个StubSmtpClient 。 using (ShimsContext.Create()) { StubSmtpClient client = new StubSmtpClient(); } 但我该怎么办呢? 最终目标是编写一个Test,它期望使用MailMessage对象调用send方法。

使用Moq模拟unit testing中的执行延迟

我正在尝试测试以下内容: protected IHealthStatus VerifyMessage(ISubscriber destination) { var status = new HeartBeatStatus(); var task = new Task(() => { Console.WriteLine(“VerifyMessage(Start): {0} – {1}”, DateTime.Now, WarningTimeout); Thread.Sleep(WarningTimeout – 500); Console.WriteLine(“VerifyMessage(Success): {0}”, DateTime.Now); if (CheckMessages(destination)) { return CheckResult.Success; } Console.WriteLine(“VerifyMessage(Pre-Warning): {0} – {1}”, DateTime.Now, ErrorTimeout); Thread.Sleep(ErrorTimeout – 500); Console.WriteLine(“VerifyMessage(Warning): {0}”, DateTime.Now); if (CheckMessages(destination)) { return CheckResult.Warning; } return […]

MSTest中数据驱动测试的问题

我正在尝试使用MSTest / Selenium在C#中使用数据驱动测试。 以下是我尝试设置的一些代码的示例: [TestClass] public class NewTest { private ISelenium selenium; private StringBuilder verificationErrors; [DeploymentItem(“GoogleTestData.xls”)] [DataSource(“System.Data.OleDb”, “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GoogleTestData.xls;Persist Security Info=False;Extended Properties=’Excel 8.0′”, “TestSearches$”, DataAccessMethod.Sequential)] [TestMethod] public void GoogleTest() { selenium = new DefaultSelenium(“localhost”, 4444, “*iehta”, http://www.google.com); selenium.Start(); verificationErrors = new StringBuilder(); var searchingTerm = TestContext.DataRow[“SearchingString”].ToString(); var expectedResult = TestContext.DataRow[“ExpectedTextResults”].ToString(); … 这是我的错误:错误3非静态字段,方法或属性’Microsoft.VisualStudio.TestTools.UnitTesting.TestContext.DataRow.get’E:\ Projects \ SeleniumProject […]

TestMethod:异步任务TestSth()不适用于.NET 4.0

我正在尝试使用.NET 4.0 BCL Async和MsTest运行异步测试方法。 由于测试用例资源管理器中缺少条目,此设置似乎无法处理[TestMethod] async Task TestSth() 。 将签名更改为async void后 ,我可以运行测试用例但结果错误(根本不会报告任何错误)。 我已经看到了使用TFS 2010运行异步任务unit testing的一个问题,但我认为应该有一个更漂亮的方法来解决这个问题。 有什么建议?

DeploymentItem在VS2010和VS2012中的表现不同

我有一个VS2010解决方案,我正在尝试升级到VS2012。 我在VS2012中遇到了MSTestunit testing的问题。 所有测试都包括测试类上的DeploymentItem属性。 [TestClass] [DeploymentItem(@”SubDir\SubDir2\models”, “models”)] public class UnitTests { … } 在2010年,它正确地从SolutionDirectory\SubDir\SubDir2\models目录中复制相关文件。 在2012年,它试图从部署测试的目录中复制SolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models 我正在寻找一种方法来恢复旧的行为。