Questions tagged «unit-testing»

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

9
如何在MSTest中运行具有多个参数的测试方法?
NUnit具有一个称为“值”的功能,如下所示: [Test] public void MyTest( [Values(1,2,3)] int x, [Values("A","B")] string s) { // ... } 这意味着测试方法将运行6次: MyTest(1, "A") MyTest(1, "B") MyTest(2, "A") MyTest(2, "B") MyTest(3, "A") MyTest(3, "B") 我们现在正在使用MSTest,是否有与此等效的功能,以便可以使用多个参数运行相同的测试? [TestMethod] public void Mytest() { // ... }

5
Mockito:InvalidUseOfMatchersException
我有一个执行DNS检查的命令行工具。如果DNS检查成功,则该命令将继续执行其他任务。我正在尝试使用Mockito编写单元测试。这是我的代码: public class Command() { // .... void runCommand() { // .. dnsCheck(hostname, new InetAddressFactory()); // .. // do other stuff after dnsCheck } void dnsCheck(String hostname, InetAddressFactory factory) { // calls to verify hostname } } 我正在使用InetAddressFactory模拟类的静态实现InetAddress。这是工厂代码: public class InetAddressFactory { public InetAddress getByName(String host) throws UnknownHostException { return …

1
Java使用Mockito验证void方法调用n次
我试图验证在DAO中是否正在调用(void)方法-我正在使用提交点,该发送点发送直到该点的结果列表,重置列表并继续。假设我在列表中有4件事,并且我的提交点为1,我希望“发送”方法被调用4次。我可以通过编写来验证该方法是否被调用过一次 Mockito.verify(mock).send() 它通过了..但是我想验证它被调用的次数。我认为 Mockito.verify(mock.send(), times(4)) 就足够了,但是它说参数对于验证不正确。 顺便说一句,如果我更改 Mockito.verify(mock).send()为 Mockito.verify(mock.send())或 Mockito.verify((mock).send())得到相同的错误。有这个想法吗?

17
jasmine:异步回调未在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内调用
我有一个叫的服务requestNotificationChannel: app.factory("requestNotificationChannel", function($rootScope) { var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_"; function deleteMessage(id, index) { $rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index }); }; return { deleteMessage: deleteMessage }; }); 我正在尝试使用茉莉花对该服务进行单元测试: "use strict"; describe("Request Notification Channel", function() { var requestNotificationChannel, rootScope, scope; beforeEach(function(_requestNotificationChannel_) { module("messageAppModule"); inject(function($injector, _requestNotificationChannel_) { rootScope = $injector.get("$rootScope"); scope = rootScope.$new(); …

2
CMake:带有单元测试的项目结构
我正在尝试构建项目以包括生产源(在src子文件夹中)和测试(在test子文件夹中)。我正在使用CMake构建它。作为最小的示例,我具有以下文件: CMakeLists.txt: cmake_minimum_required (VERSION 2.8) project (TEST) add_subdirectory (src) add_subdirectory (test) src / CMakeLists.txt: add_executable (demo main.cpp sqr.cpp) src / sqr.h #ifndef SQR_H #define SQR_H double sqr(double); #endif // SQR_H src / sqr.cpp #include "sqr.h" double sqr(double x) { return x*x; } src / main.cpp-使用sqr,并不重要 测试/CMakeLists.txt: find_package(Boost COMPONENTS system filesystem …


11
具有文件系统依赖性的单元测试代码
我正在编写一个组件,给定一个ZIP文件,该组件需要: 解压缩文件。 在解压缩的文件中找到一个特定的dll。 通过反射加载该dll并在其上调用方法。 我想对该组件进行单元测试。 我很想编写直接处理文件系统的代码: void DoIt() { Zip.Unzip(theZipFile, "C:\\foo\\Unzipped"); System.IO.File myDll = File.Open("C:\\foo\\Unzipped\\SuperSecret.bar"); myDll.InvokeSomeSpecialMethod(); } 但是人们经常说:“不要编写依赖于文件系统,数据库,网络等的单元测试。” 如果我以对单元测试友好的方式编写此代码,我想它看起来应该像这样: void DoIt(IZipper zipper, IFileSystem fileSystem, IDllRunner runner) { string path = zipper.Unzip(theZipFile); IFakeFile file = fileSystem.Open(path); runner.Run(file); } 好极了!现在可以测试了;我可以将测试双打(模拟)输入DoIt方法。但是要花多少钱呢?我现在必须定义3个新接口才能使其可测试。我到底在测试什么?我正在测试我的DoIt函数与其依赖项正确交互。它无法测试zip文件是否已正确解压缩,等等。 感觉好像我不再在测试功能。感觉就像我只是在测试课堂互动。 我的问题是:对依赖于文件系统的内容进行单元测试的正确方法是什么? 编辑我正在使用.NET,但是该概念也可以应用Java或本机代码。

5
在Guice中覆盖绑定
我刚刚开始玩Guice,我可以想到的一个用例是,在测试中,我只想覆盖单个绑定。我想我想使用其余的生产级别绑定来确保所有设置都正确并避免重复。 因此,假设我有以下模块 public class ProductionModule implements Module { public void configure(Binder binder) { binder.bind(InterfaceA.class).to(ConcreteA.class); binder.bind(InterfaceB.class).to(ConcreteB.class); binder.bind(InterfaceC.class).to(ConcreteC.class); } } 在我的测试中,我只想覆盖InterfaceC,同时保持InterfaceA和InterfaceB不变,所以我想要类似以下内容: Module testModule = new Module() { public void configure(Binder binder) { binder.bind(InterfaceC.class).to(MockC.class); } }; Guice.createInjector(new ProductionModule(), testModule); 我也尝试了以下方法,但是没有运气: Module testModule = new ProductionModule() { public void configure(Binder binder) { super.configure(binder); binder.bind(InterfaceC.class).to(MockC.class); …
138 java  unit-testing  guice 

9
在IntelliJ中创建测试类
我正在IntelliJ内部的传统Maven Java项目结构中工作,例如 main/java/com/x/y test/java/com/x/y 当我使用IntelliJ 在main / java / com / x / y中创建一个名为Foo的类时,我想自动在test / java / com / x / y中创建一个名为FooTest.java的文件。 在Eclipse中,工具栏上有一个按钮,它将完成创建框架测试类所涉及的许多工作,有人知道IntelliJ中的相似之处吗? 谢谢,

15
您是否将单元测试放在同一项目或另一个项目中?
为了方便起见,您是否将单元测试放在同一项目中?还是将它们放在单独的程序集中? 如果像我们一样将它们放在单独的程序集中,则最终在解决方案中会有许多其他项目。这非常适合编码时的单元测试,但是如何在没有所有这些额外程序集的情况下发布应用程序?
137 c#  unit-testing 


8
.Net核心单元测试-模拟IOptions <T>
我觉得我在这里确实缺少一些明显的东西。我有一些类需要使用.Net Core IOptions模式(?)注入选项。当我对该类进行单元测试时,我想模拟各种版本的选项以验证该类的功能。有谁知道如何在Startup类之外正确模拟/实例化/填充IOptions? 以下是我正在使用的类的一些示例: 设置/选项型号 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace OptionsSample.Models { public class SampleOptions { public string FirstSetting { get; set; } public int SecondSetting { get; set; } } } 使用设置的要测试的类: using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using OptionsSample.Models using System.Net.Http; using …

16
单元测试中的随机数据?
我有一个同事,他为用随机数据填充其字段的对象编写单元测试。他的原因是它提供了更广泛的测试范围,因为它将测试许多不同的值,而普通测试仅使用单个静态值。 我为此提出了许多不同的理由,主要的理由是: 随机值表示测试并非真正可重复(这也意味着如果测试可以随机失败,则可以在构建服务器上这样做并破坏构建) 如果它是一个随机值并且测试失败,则我们需要a)修复对象,b)每次都强迫我们测试该值,所以我们知道它是有效的,但是由于它是随机的,所以我们不知道该值是什么 另一位同事补充说: 如果我正在测试异常,则随机值将无法确保测试以预期状态结束 随机数据用于冲洗系统和负载测试,而不用于单元测试 还有谁能补充我可以给他的其他理由,让他停止这样做? (或者,这是编写单元测试的一种可接受的方法,而我和我的其他同事错了吗?)

6
RSpec vs黄瓜(RSpec故事)
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 什么时候应该在Rails应用程序中使用规格,何时使用Cucumber(以前的rspec-stories)?我当然知道如何工作并积极使用规范。但是使用黄瓜仍然感觉很奇怪。我目前对此的看法是,在为客户端实现应用程序时使用Cucumber很方便,而且还不了解整个系统应该如何工作。 但是,如果我正在做自己的项目呢?在大多数情况下,我知道系统各部分之间的交互方式。我需要做的就是编写一堆单元测试。那我需要黄瓜的可能情况是什么? 并且,作为第二个相应的问题:如果我写黄瓜的故事,我是否必须写规范?难道不是对同一件事进行双重测试吗?

16
在Ruby中对受保护的私有方法进行单元测试的最佳方法是什么?
使用标准Ruby Test::Unit框架对Ruby中受保护的方法和私有方法进行单元测试的最佳方法是什么? 我确定有人会提出并断然断言“您应该仅对公共方法进行单元测试;如果需要进行单元测试,则不应将其作为受保护的方法或私有方法”,但是我对此并不感兴趣。我有几个方法被保护的或私有的良好和有效的原因,这些私人/受保护的方法是相对复杂的,并且在类的公共方法依赖于这些保护/私有方法正常工作,所以我需要一种方法来测试受保护/私有方法。 还有一件事...我通常将给定类的所有方法放在一个文件中,并将对该类的单元测试放在另一个文件中。理想情况下,我希望所有魔术都能将这种“受保护和私有方法的单元测试”功能实现到单元测试文件(而不是主源文件)中,以使主源文件尽可能简单明了。

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.