Tag: unit testing

unit testingXNA:我需要模拟我的GraphicsDevice

我在使用XNA框架。 为了帮助我,我做了一个看起来像这样的帮助类: ActorHolder + SpriteBatch (SpriteBatch) + ContentManager (ContentManager) – drawables (IList) – updatables (IList) + ActorHolder(GraphicsDevice, ContentManager) + Draw(GameTime) + Update(GameTime) + AddActor(IActor) + RemoveActor(IActor) + GetCollidingActors(IActor) 现在我想对这个class级进行unit testing。 但是当你看到我的构造函数需要一个图形设备和一个内容管理器。 虽然我认为这在我的应用程序中很明显,但在我的测试中却没有。 我应该嘲笑这两个只是为了进行unit testing还是我的设计存在缺陷? –UPDATE– 我找到了一个可能有用的项目的链接: http : //scurvytest.codeplex.com/没有任何xp,因为编码必须为社交生活腾出空间。 – 注意 – 对不起,我的UML法语,我的公司不使用它,所以我从来没有使用它,除了回到学校。

如何防止使用Moq调用基类构造函数?

如何防止使用Moq调用基类构造函数? 我无法用Moq模拟一个对象,因为正在调用基类构造函数并且它需要真正的对象,所以我想停止调用基类构造函数。 var parametersMoq = new Mock(null, “Params”, null){ CallBase = false, }; _storedProcedureAccessor._parameters = parametersMoq.Object; MyDerivedClass的基类构造函数导致了我的问题。

测试超出执行超时时间

我的main.cs代码: public string Generate(int length) { char[] chars = “$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&”.ToCharArray(); string password = string.Empty; Random random = new Random(); for (int i = 0; i < length; i++) { int x = random.Next(1, chars.Length); if (!password.Contains(chars.GetValue(x).ToString())) password += chars.GetValue(x); else i–; } return password; } 我已经制作了测试代码 [TestMethod] [Timeout(1000)] public void RenderingPasswordShouldHaveMaximumSize() { var amountOfCharacters = […]

Visual Studio 2013代码覆盖率 – 未检测二进制文件

我正在尝试使用我编写的测试在我的代码块上运行代码覆盖。 在它工作正常但现在我得到错误: 生成空结果:没有检测到二进制文件。 确保测试已运行,所需的二进制文件已加载,具有匹配的符号文件,并且未通过自定义设置排除。 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=253731 我似乎无法弄清楚如何解决这个问题。 环顾四周,我看到很多人都试图去他们的项目根目录并删除那里的.suo(解决方案用户选项)文件,但这并没有解决我的问题。 我正在使用VS 2013 Ultimate

如何防止虚拟方法被嘲笑?

我们有一个基类为INotifyPropertyChanged提供了一些默认实现(这个类被许多其他类使用,不能轻易更改): public class ObservableBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; // this is virtual so derived classes can override it (rarely used, but it is used) protected virtual void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } } 现在我有一个接口和一个从ObservableBase派生的抽象基类,并实现该接口提供一些默认实现(主要用于属性): public interface INamedTrigger { string Name […]

当我不期望它与NSubstitute一起调用函数时

在设置我的模拟调用函数时,我得到了一个我从NSubstitute没想到的行为。 行为的简化版本是 [Test] public void NSubstituteTest() { var mockedFoo = Substitute.For(); mockedFoo.GenerateString(Arg.Any()).Returns(x => GetValue(x.Args()[0])); mockedFoo.GenerateString(“0”).Returns(“hi”); string result1 = mockedFoo.GenerateString(“0”); string result2 = mockedFoo.GenerateString(“1”); Assert.AreEqual(“hi”, result1); Assert.AreEqual(“1”, result2); } private string GetValue(object val) { string returnValue = val != null ? val.ToString() : “I am null”; System.Diagnostics.Trace.WriteLine(returnValue); return returnValue; } 测试通过,但我得到输出:0 1 这表明调用了mockedFoo.GenerateString(“0”); 实际上导致调用GetValue()函数。 如果我对Moq做同样的事情: [Test] […]

entity framework上下文6.1.3没有刷新/销毁?

在此unit testing中,我将validation内容字节列的MD5是否已正确计算,保留和提取。 但是,似乎entity framework(6.1.3)上下文未刷新/销毁,因为在原始SQL UPDATE显然生效后,但在使用新上下文获取行时未显示。 namespace UnitTests { [TestClass] public class TestDataPacketServiceDebug { [TestInitialize] public void Setup() { CommonMethods.ResetDatabase(); try { CommonMethods.ResetDataPacketDirectory(); } catch (DirectoryNotFoundException) { } } [TestCategory(“DataPacketService”), TestMethod] public void TestGetLocalFilePathDebug() { // Persist a DataPacket int dataPacketId; using (var testDBContext = new TestDBContext()) { DataPacket dataPacket = new DataPacket { Content = […]

是否有很好的unit testing完整性

我有一个课我需要unit testing。 对于我正在开发c#并使用NUnit的背景,但我的问题更具理论性: 我不知道我是否已经编写了足够的测试方法,如果我检查了所有方案。 是否有已知的工作方法/最佳实践/规则集合? 就像是 “检查你class上的每一种方法…… bla bla” “检查DB的所有插入… bla bla” (这是可能的规则的一个愚蠢的例子,但如果我有一些不傻的东西,我不会问这个问题)

Visual Studiounit testing安全例外

我正在开发一个监视打印队列的应用程序。 要做到这一点,它需要能够管理它们。 当我运行它进行调试时,应用程序运行正常,但是,当我尝试对类进行unit testing时,会抛出安全exception。 有没有办法让visual studiounit testing具有更高的安全级别? PrintQueue q = new PrintQueue(server, QueueName, PrintSystemDesiredAccess.AdministratePrinter); 抛出exception:尝试通过安全透明方法’MS.Internal.PrintWin32Thunk.PrinterDefaults.Dispose(Boolean)’来访问安全关键方法’MS.Internal.PrintWin32Thunk.PrinterDefaults.InternalDispose(Boolean)’失败。 同样,在unit testing之外使用时,不会抛出任何exception并且类按预期工作。 我曾尝试以管理员身份运行visual studio,但仍然收到exception。 更新:看起来我将无法测试这个类。 包含它的类库已经用.NET 3.5编写,这就是使用该类时不会发生exception的原因。 我做了一些进一步的实验,发现虽然这个类库以.NET 3.5为目标,但是抛出exception的类不能被面向.NET 4.0的应用程序使用。 Visual Studio测试项目需要以.NET 4.0为目标。

在系统测试中使用Selenium时,使用Thread.Sleep的替代方法是什么?

我有一个使用Selenium的TestMethod如下: [TestMethod] public void ShouldSendPasswordReminder() { // go to loginregister url _fireFoxWebDriver.Navigate().GoToUrl(UkPaBaseUrl + “loginregister.aspx”); Thread.Sleep(1000); // click the forgotten password _fireFoxWebDriver.FindElement(By.LinkText(“Forgotten your password?”)).Click(); Thread.Sleep(1000); // enter your email address _fireFoxWebDriver.FindElement(By.Id(“PasswordResetRequest1_PasswordResetRequest_Username”)) .SendKeys(“username.lastname@domain.com”); Thread.Sleep(1000); // click submit _fireFoxWebDriver.FindElement(By.Id(“PasswordResetRequest1_PasswordResetRequest_PasswordResetRequestSubmit”)).Click(); Thread.Sleep(5000); // assert Assert.IsTrue(_fireFoxWebDriver.Url.Contains(“ThankYou”)); } 正如你所看到的,我必须多次调用Thread.Sleep(因为页面可能需要一些时间来完成它由于javascript等所做的事情),因为Selenium似乎无法处理页面加载和延迟不同于WatiN。 这使代码相当丑陋而且不太可靠。 处理此类场景的更好方法是什么? 您是否也在测试中经常编写Thread.Sleep调用? 谢谢,