Questions tagged «unit-testing»

单元测试是一种测试源代码的各个单元以确定它们是否适合使用的方法。

6
为什么Assert.AreEqual(T obj1,Tobj2)在相同的字节数组下失败
在以下代码段中,我有两个相同的字节数组: /// <summary> ///A test for Bytes ///</summary> [TestMethod()] public void BytesTest() { byte[] bytes = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketData); TransferEventArgs target = new TransferEventArgs(bytes); byte[] expected = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketValue); byte[] actual; actual = target.Bytes; Assert.AreEqual(expected, actual); } 直到下一个字节,两个数组都是相同的。在这种情况下,为什么Assert.AreEqual失败?

7
使用C#和RhinoMocks进行测试驱动开发的最佳实践
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 为了帮助我的团队编写可测试的代码,我提出了一些简单的最佳实践,以使我们的C#代码库更可测试。(有些观点涉及C#模拟框架Rhino Mocks的局限性,但这些规则也可能更普遍地适用。)是否有人遵循任何最佳实践? 为了最大化代码的可测试性,请遵循以下规则: 首先编写测试,然后编写代码。原因:这样可确保您编写可测试的代码,并确保每一行代码都可以为其编写测试。 使用依赖注入设计类。原因:您不能嘲笑或测试看不见的东西。 使用Model-View-Controller或Model-View-Presenter将UI代码与其行为分开。原因:允许在最小化无法测试的部分(UI)的同时测试业务逻辑。 不要编写静态方法或类。 原因:静态方法很难或不可能隔离,Rhino Mocks无法模拟它们。 编程关闭接口,而不是类。原因:使用接口可以阐明对象之间的关系。接口应定义对象从其环境中需要的服务。同样,可以使用Rhino Mocks和其他模拟框架轻松模拟接口。 隔离外部依赖项。原因:无法测试未解决的外部依赖关系。 将要模拟的方法标记为虚拟。原因:Rhino Mocks无法模拟非虚拟方法。

5
Perl构建,单元测试,代码覆盖:完整的工作示例
我发现的有关Perl构建过程,单元测试和代码覆盖率的大多数Stackoverflow答案只是将我引向CPAN那里的文档。指向CPAN模块绝对没有错,因为应该将完整的文档保存在这里。不过,在很多情况下,我都找不到完整的工作代码示例。 我一直在Internet上搜索可以下载或粘贴到我的IDE中的实际工作代码示例,例如典型的教程“ Hello World”示例源代码,但是该示例演示了使用单元测试和代码进行构建的过程覆盖率分析。有人有一个完整的工作项目的小例子来演示这些技术和过程吗? (我确实有一个小的工作示例,我将用它回答我自己的问题,但是可能还有其他SO用户拥有比我想出的示例更好的示例。)

2
Angular 2测试-异步函数调用-何时使用
在Angular 2中进行测试时,何时在TestBed中使用异步功能? 什么时候使用这个? beforeEach(() => { TestBed.configureTestingModule({ declarations: [MyModule], schemas: [NO_ERRORS_SCHEMA], }); }); 你什么时候使用这个? beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [MyModule], schemas: [NO_ERRORS_SCHEMA], }); })); 有人可以启发我吗?


3
如何在每个测试基础上更改模拟实现[Jestjs]
我想改变嘲笑依赖的实施在每个单一的测试基础上通过扩展默认模仿的行为,并恢复回原来的执行下一个测试执行时。 更简单地说,这就是我要实现的目标: 模拟依赖 在单个测试中更改/扩展模拟实现 下一次测试执行时恢复为原始模拟 我目前正在使用Jest v21。 典型的Jest测试如下所示: __mocks__/myModule.js const myMockedModule = jest.genMockFromModule('../myModule'); myMockedModule.a = jest.fn(() => true); myMockedModule.b = jest.fn(() => true); export default myMockedModule; __tests__/myTest.js import myMockedModule from '../myModule'; // Mock myModule jest.mock('../myModule'); beforeEach(() => { jest.clearAllMocks(); }); describe('MyTest', () => { it('should test with default mock', () …

1
Moq用对象参数验证
我正在尝试验证作为类的参数。被测试的代码很好。该错误正在测试中。 我尝试了两种方法,但都失败了。 这是我的尝试: 1: this.MockImageResizeFilter.Verify(m => m.Filter(this.UploadedFileData, new ImageFilterOptions() { Width = 256, Height = 256, })); 即使作为第二个参数传递的对象具有相同的属性,这始终会失败。第一个参数已通过验证。 2: this.MockImageResizeFilter.Setup(m => m.Filter(It.IsAny<byte[]>(), It.IsAny<ImageFilterOptions>())) .Callback<byte[], ImageFilterOptions>((data, options) => { Assert.AreEqual(this.UploadedFileData, data, "data"); Assert.AreEqual(filterOptions.Width, options.Width, "Width"); Assert.AreEqual(filterOptions.Height, options.Height, "Height"); } ); 即使它应该失败,也总是通过。回调中的Asserts确实会失败,但是不会将异常传递给外部上下文,因此测试始终会通过。 您能帮我找出我做错了什么吗?
86 c#  .net  unit-testing  moq 

4
是否有一组用于测试字符编码问题的“ Lorem ipsums”文件?
对于布局,我们有著名的“ Lorem ipsum”文本来测试其外观。 我要寻找的是一组包含Text的文件,这些Text编码有几种不同的编码,我可以在JUnit测试中使用它们来测试读取文本文件时处理字符编码的某些方法。 例: 具有ISO 8859-1编码的测试文件和Windows-1252编码的测试文件。Windows-1252必须触发区域80 16 – 9F 16中的差异。换句话说,它必须至少包含此区域的一个字符,才能与ISO 8859-1区别开来。 也许最好的测试文件集是每种编码的测试文件一次包含所有字符。但是也许我不了解某件事-我们都喜欢这种编码的东西,对不对?:-) 是否有这样一组用于字符编码问题的测试文件?

7
phpunit避免模拟的构造函数参数
如何避免phpunit调用模拟对象的构造函数?否则,我需要一个模拟对象作为构造函数参数,另一个用于该对象,以此类推。api看起来像这样: getMock($className, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE) 我不明白。即使$callOriginalConstructor设置为false ,它仍然会抱怨构造函数参数。 我在构造函数中只有一个对象,这是一个依赖项注入。所以我认为我在那里没有设计问题。


10
测试JAX-RS Web服务?
我目前正在寻找为基于JAX-RS(用于RESTful Web服务的Java API)的Web服务创建自动化测试的方法。 我基本上需要一种方法来向其发送某些输入并验证我是否获得了预期的响应。我更愿意通过JUnit做到这一点,但是我不确定如何实现。 您使用什么方法来测试您的Web服务? 更新:正如entzik所指出的那样,将Web服务与业务逻辑分离可以让我对业务逻辑进行单元测试。但是,我也想测试正确的HTTP状态代码等。

3
如何使用Mockito匹配传递给Class <T>的参数的null
我有这样的方法: public &lt;T&gt; method(String s, Class&lt;T&gt; t) {...} null在将匹配器用于其他参数时,我需要检查传递给第二个参数的方法,我一直在这样做: @SuppressWarnings("unchecked") verify(client).method(eq("String"), any(Class.class)); 但是,有没有更好的方法(没有抑制警告)?T表示某些其他方法的返回类型,有时void在某些情况下null会传入。

7
在业力单元测试期间如何修复图像的404警告
我正在使用grunt / karma / phantomjs / jasmine对我的指令之一(angularjs)进行单元测试。我的测试运行正常 describe('bar foo', function () { beforeEach(inject(function ($rootScope, $compile) { elm = angular.element('&lt;img bar-foo src="img1.png"/&gt;'); scope = $rootScope.$new(); $compile(elm)(); scope.$digest(); })); .... }); 但我确实得到了这些404 WARN [web-server]: 404: /img1.png WARN [web-server]: 404: /img2.png ... 尽管它们什么也不做,但是它们确实会在日志输出中增加噪音。有没有办法解决这个问题 ?(当然,无需更改业力的logLevel,因为我确实希望看到它们)

5
规格 用于JUnit XML输出[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 在哪里可以找到JUnit XML输出的规范。我的目标是编写一个UnitTest ++ XML报告程序,该报告程序生成类似输出的JUnit。 请参阅:“无法使hudson解析JUnit测试输出XML ”和“ Hudson,C ++和UnitTest ++ ”


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.