说测试应该只测试一件事。这有什么好处
编写更大的测试来测试更大的代码块不是更好吗?调查测试失败无论如何都很困难,我看不到小型测试对它有什么帮助
编辑:单词单位没有那么重要。比如说我认为这个单位有点大。这不是这里的问题。真正的问题是,为什么要对所有方法进行一个或多个测试,因为覆盖许多方法的测试越少就越简单
例如:一个列表类。为什么要对添加和删除进行单独测试?先添加然后删除的一个测试听起来更简单。只测试一个东西将隔离该东西,并证明它是否有效。这就是单元测试的想法。测试不止一件事情的测试没有错,但这通
使用main方法测试java/.net类是一种很好的做法
我在一些教科书中看到过推荐,但对我来说,使用单元测试框架似乎更有意义
main方法为您提供了类的一个入口点,您可以测试类功能的一个方面。我猜您可以测试很多,但它似乎没有使用Junit或Nunit那么有意义。一个明显的优势似乎是您可以使用白盒测试类。也就是说,您可以测试它的内部(例如私有方法)。单元测试不能做到这一点,也不想做到这一点,它们主要是为了从用户的角度测试界面和行为。main方法在某些情况下可能有用,但是使用调试器,然后编写单元测
我刚刚开始单元测试,并编写了一些简短的测试来检查名为isPrime()的函数是否正常工作
我有一个测试,检查函数是否工作,并有一些数字和预期返回值形式的测试数据
我应该测试多少?我如何决定测试哪一个?这里的最佳实践是什么
一种方法是生成1000个素数,然后循环遍历它们,另一种方法是只选择4或5个并测试它们。正确的做法是什么?问问自己。我到底想测试什么。而测试是最重要的。测试以确保它在预期的情况下基本上执行您期望它执行的操作
测试所有这些空值和边缘情况-我不认为是真实的,太耗时了,需要有人在以后维
我有一个我想进行单元测试的方法,其中包含文件系统调用,我想知道如何进行。我已经看过了,但它没有回答我的问题
我正在测试的方法类似于(c#)
我模拟Transform(..)方法,不向文件输出任何内容,因为我正在测试Process方法而不是Transform(..)方法,因此不存在output.txt文件。因此,if检查失败
我应该如何正确地做到这一点?我是否应该在文件io方法周围创建某种包装,我也会模拟这种方法?我认为应该创建两个文件:一个文件长度为零,另一个文件中包含一些数据。
然后,您应该对
我目前在单元测试中使用一个简单的约定。如果我有一个名为“EmployeeReader”的类,我将创建一个名为“EmployeeReader.Tests”的测试类。然后,我将使用以下名称为测试类中的类创建所有测试:
正确读取\有效\员工\数据\生成\员工\对象
读取\缺少\员工\数据\引发\无效\员工\ ID \异常
等等
我最近阅读了一篇关于BDD中使用的测试的文章。我喜欢这个命名的可读性,最后是一个测试列表,比如:
读取有效员工时(固定装置)
生成员工对象(方法)
员工有正确的ID(方
在编写测试套件时,我试图遵循良好的实践。中途,我意识到我花了很多(大部分)时间在假物体上……我的大部分测试都是这样做的
public interface ITemplateRepository
{
string get GetGenericTemplate {get;}
}
[测试]
public void GetGenericTemplateContains()
{
ITemplateRepository rep=new-FaketTemplateRepository();
As
我们有一个应用程序,现在有一个64位的目标,以及旧的32位目标。我的问题与我们的单元测试有关。我们是否也应该在这两种语言中编译和运行单元测试?我们有没有可能通过这种方式发现缺陷?我是不是太偏执了
如果该语言暴露了32位模式和64位模式之间的差异,那么当然应该对这两种模式进行单元测试。测试一个平台所需的人力资源不到测试一个平台所需人力资源的两倍,所以这很划算:)
如果您的语言没有公开32位和64位之间的差异(比如,您在该语言中只有无界整数),那么您仍然应该对这两种平台进行单元测试。您将在平台无关语
我有一个项目,它有两个不同的模块,每个模块都有自己的testng测试集。我有单独的运行配置,每个配置都启用了代码覆盖率。我需要运行这两个程序来收集覆盖率统计数据,我想知道是否有办法将覆盖率数据整合到单个会话中
是否可以在IntelliJ中创建一个运行配置来执行两个不同的testng.xml?我不知道IDEA的具体情况,但testng允许您包含xml文件:
<suite name="My suite">
<suite-files>
<suite-file p
阅读帮助我解决了单元测试、TDD等问题
自从遇到TDD开发方法后,我知道这是一条正确的道路。阅读各种教程有助于我理解如何开始,但它们总是非常简单化——实际上,人们无法将其应用于活动项目。我管理的最好的方法是围绕代码的一小部分编写测试,比如库,它们被主应用程序使用,但没有以任何方式集成。虽然这很有用,但它大约相当于代码库的5%。关于如何进入下一步,帮助我在主应用程序中进行一些测试,几乎没有什么内容
诸如“”和“”之类的注释使我意识到,下一步是理解如何将代码解耦以使其可测试
我应该看什么来帮助我做到
NSubstitute支持部分模拟的想法吗
更新:正如@Brian指出的,NSubstitute 1.7+
原始答复:
从v1.0开始就不是了
这是我们正在为vNext考虑的事情。如果您有特定的语法想法或要求,请发布到。我添加了一个,因此您也可以在那里添加详细信息。我使用的是1.3.0.0版,但我可以:
Constraint failing = Substitute.For<Constraint>();
failing.Matches(-1).Returns(false);
约束
我希望下面的解释会有意义,因为这是我们面临的一个奇怪的问题,很难描述
我们有一个maven项目,它是在hudson中构建的,它包含一些单元测试,其中使用并断言日期。hudson服务器在solaris上运行。现在,偶尔(比如30%的时间)使用日期的单元测试会失败,因为从单元测试的指定时间中扣除了3,5小时,因此断言开始失败。其他70%的工作正常,尽管代码中没有任何更改,我们一小时运行几次hudson作业
我将以下代码添加到unittest以检查时间:
@Test
public void testD
我想开始在我的应用程序中进行更多的单元测试,但在我看来,我所做的大部分工作都不适合进行单元测试。我知道单元测试在教科书示例中应该如何工作,但在实际应用中,它们似乎没有多大用处
我编写的一些应用程序具有非常简单的逻辑和与我无法控制的事物的复杂交互。例如,我想编写一个守护进程,它对一些应用程序发送的信号做出反应,并更改操作系统中的一些用户设置。我看到三个困难:
首先,我必须能够与申请者交谈,并得到他们事件的通知
然后,每当我收到信号时,我都需要与操作系统交互,以便更改适当的用户设置
最后,所有这些
我读了很多关于TDD和单元测试的问答,但我没有找到答案:我从哪里开始
我和团队已经完成了几个项目,其中我们采用了单元测试,用于我们的代码。。。但是首先是代码,然后是单元测试。在开发过程的某个阶段,先编写测试,然后编写代码变得非常自然,这使我们采用了更TDD的风格
现在,我们想迈出下一步,从一开始就尝试使用TDD启动一个新项目。问题是。。。从哪里开始?当我完全没有代码时,我会写的第一个测试是什么
比方说,为了有一个上下文来考虑,我必须开发一个以文档为中心的互联网应用程序,有一点工作流程和。。。还有
你有没有理由不应该为了测试另一个方法而在你测试的对象上创建一个部分伪造的对象,或者只是伪造一个方法?这可能有助于避免您创建一个全新的模拟对象,或者当您正在伪造的方法中存在一个外部依赖项,而您无法合理地消除该依赖项,并且希望将其排除在所有其他单元测试之外时?您希望这样做的对象正在尝试做太多的事情。特别是,如果您有一个外部依赖项,您通常会创建一个对象来隔离该依赖项。立面模式就是一个例子。如果您的对象在设计时没有考虑到可测试性,那么您可能需要进行一些重构。请看(PDF)。他还有一本书名相同的书,书中的
我在我的应用程序中使用EF4,我想为DAL方法制作测试用例,这些方法通常通过访问数据库来获取数据。我正在使用Typemock框架进行模拟。我想模拟数据库调用,只想测试查询。例如:
ObjectContext.Where(u => u.code == Code)
为此,我需要为EF模型制作假ObjectContext,并希望在假ObjectContext中填充一些假数据,以便我们可以在假ObjectContext上执行查询(LINQ)。请建议如何创建假对象上下文(使用TypeMock框架
我已经准备好了在单个设备中工作的测试脚本。。现在我必须在多个设备中运行我的测试用例。。有什么解决办法吗。。或者我必须为此使用任何构建工具。您可以将要测试的设备连接到adb服务器,然后在测试脚本中针对每个设备:
adb -s <devices ip>:<port>
adb-s:
通过在脚本中使其通用,您可以明智地了解如何在连接的设备之间循环
我有一个web项目,它从web.config读取多个配置键。这些设置与项目中实施的规则相关。当单元测试调用web项目中的模型类时,它最终从单元测试项目中读取app.config。因此,我必须在单元测试项目中复制app.config中的键。是否最好将配置信息移动到web项目中的外部文件以避免配置信息的副本
提前感谢。在测试web应用程序时,我会和您一样,将设置复制到测试项目的app.config文件中。这没什么错
另一种方法是模拟将要使用的配置设置,但这可能会很麻烦,但这仍然是一种有效的方法。我倾
我正在尝试使用单元测试向导进行单元测试,但我总是得到:
测试方法TestProject9.Log\u InsertMasterTest引发异常:
System.NullReferenceException:对象引用未设置为对象的实例
My test.cs:
[TestMethod()]
[DeploymentItem("Engine.dll")]
public void Log_InsertMasterTest()
{
SkinnedRepairS
我使用VS 2012和Nunit 2.6。我的测试项目引用了一个控制台应用程序和一个程序集。我希望在运行测试时提取程序集的配置文件,而不是控制台应用程序的配置文件。
对于在VS中执行的常规测试,属性deploymentitemattribute似乎是一个很好的解决方案。但NUnit不存在此属性。我对实现自己的类的解决方案不满意。
您认为使用NUnit在程序集和测试项目之间共享配置文件的最佳方式是什么
我所说的“某物”是指可能导致函数出现意外行为的输入数据,主要是指其他类似情况,其目的是测试函数的“负面”条件。
ps
顺便问一下,什么名字也用来表示“积极”的东西?我不确定像这样的数据是否有一个特定的“官方”名称,而不是像“测试用例”这样比较通用的名称。你可以用“积极的测试用例”和“消极的测试用例”这样的名称更具体一些
然而,我曾经在一个处理大量电子邮件的团队中工作过,男孩的电子邮件数据乱七八糟!我们的系统会定期收到一封电子邮件消息,这会以某种方式使整个系统崩溃,因此我们开始将这些消息保存在我们
我开始使用单元测试。我遇到了一个情况,不知道如何继续:
例如:
我有一个打开并读取文件的类。
在我的单元测试中,我想测试open方法和read方法,但是要读取文件,我需要先打开文件
如果“打开文件”测试失败,“读取文件”测试也会失败
那么,如何明确读取失败是因为?我在读取中测试open???打开文件是读取文件的先决条件,因此可以在测试中包含它。如果文件打开失败,可以在代码中引发异常。然后,测试中的错误消息将明确测试失败的原因
我也建议您考虑在测试本身中创建文件,以移除对现有文件的任何依赖性。通过
我对使用PHPUnit相当陌生,我正试图通过使用数据提供者来更有效地使用它。在编写一个普通测试用例时,我可以让数据提供者工作,但是我发现我正在跨多个测试用例重写我的设置代码。因此,我试图用一个BaseTestCase类扩展PHPUnit_Framework_TestCase,该类完成我的所有常见设置。如果我在扩展我的BaseTestCase类的测试用例中运行简单测试,这是可行的。但是,在扩展BaseTestCase类时,我似乎不能使用@dataProvider
所以我的设置是:
class B
在一些教程之后,我实现了UnitOfWork和GenericRepository
我有一个IEFDbContext/EFDbContext类来处理数据库,我的工作如下
public interface IUnitOfWork : IDisposable
{
IGenericRepository<TEntity> GetRepository<TEntity>() where TEntity : class;
void Save();
}
public cl
我们创建了一个自定义元运行程序,然后在各种构建配置中使用它
我目前面临的问题是,MetaRunner中的几个步骤(如运行mstest)并不适用于所有项目。在meta runner中是否有一种方法我可以说构建步骤是可选的(可能基于变量)。我知道我可以创建两个元运行程序(一个有测试,另一个没有),但我想避免它,除非没有其他选择
我得到的错误是,对于没有单元测试的项目,“找不到程序集、运行配置和测试元数据”。我不知道是否有办法使用变量,除非使用自定义脚本
但是,这可能要简单一些,因为您可以在构建配置中
我是否应该对从一个或多个对象到另一个对象的值分配进行单元测试。
例如,这可能发生在方法或生成器中(也可以使用自动映射)
你认为这种测试有多重要?我想这是主观的,状态是任意的,但我想有必要确保映射符合我们的预期?“我应该对从一个或多个对象到另一个对象的值分配进行单元测试吗?”
如果这是您可以测试的最小程序单元,则是
从简单做起,一路上路不要专注于测试基础设施-测试业务逻辑。如果您的代码(为特定目的而设计的类)正确地执行了您的需求描述,那么无论是某些内部构建器/方法还是任何设置“正确”与否,都无关紧
在grunt中,我们通过以下方式在PhantomJs中执行单元测试
karma: {
options: {
configFile: 'karma.conf.js',
runnerPort: 9876,
browsers: ['Chrome']
},
unitTestDev: {
browsers: ['PhantomJS'],
singleRun: true
}
}
grunt.registerTask(
我在grails项目中使用Spring安全性。我已经安装了SpringSecurity核心插件和SpringSecurity ui插件
我用于Person和Authority的域类分别是User和Role
根据项目需求,我修改了User.groovy类,代码如下:
class User {
transient springSecurityService
//Mandatory Fields
String employeeId
String firstName
String lastName
S
在模型之后,我开始为控制器编写单元测试。我使用CakePHP2.5.1
<?php
App::uses('MediaController', 'Controller');
/**
* MediaController Test Case
*
*/
class MediaControllerTest extends ControllerTestCase
{
/**
* Fixtures
*
* @var array
*/
public $fi
我使用的是Grails2.4.1,在理解如何正确测试域类上的唯一约束时遇到了困难
我的域类看起来像:
班主任{
String name
static constraints = {
name( unique: true, blank: false )
}
}
还有我的测试:
@TestFor(Person)
@TestMixin(GrailsUnitTestMixin)
class PersonSpec extends Specification {
我刚刚试用了Meteor的速度附带的各种测试框架。我倾向于使用摩卡,但测试结果只能通过velocity html reporter获得。是否有向控制台获取一些输出的配置?Jasmine默认拥有它。我假设您通过以下命令安装了velocity
捷运增加速度快速启动
默认情况下,此命令安装velocity html reporter。相反,您可以手动安装velocity
捷运附加速度
捷运加茉莉花单元
捷运增加摩卡网速度
你可以通过观看这段视频获得更多信息:我刚刚发布了一个软件包,使用了一些摩卡的标准
我有一组域和控制器类,分别称为:Organization和OrganizationController
OrganizationController只有一种方法:
def index() {
def organizations = Organization.list()
[orgs: organizations]
}
我尝试用两种方法模拟域类
第一种方法是使用@Mock注释,创建对象并保存:
void "test index"() {
given:
new Or
我正在尝试测试加载微调器是否仍在页面上,因此当它消失时,我可以检查其他元素,但如果我使用以下内容:
WebDriverWait wait = new WebDriverWait(this.Driver, TimeSpan.FromMinutes(2));
wait.Until(driver => !driver.FindElement(By.CssSelector(css)).Displayed);
它抛出了NoSuchElementException,当我试图检查元素是否存在时,没有使
在命令行上运行MSTest时失败的一组测试中,我有一个测试。但是,相同的测试套件在VS2012 IDE中通过
我验证了在命令行和VS2012 IDE上都执行了相同的测试项目dll
我通过注释出一个测试方法并观察MSTest报告(一个更新的测试摘要)来验证这一点,在注释出测试方法之前,其他一些测试失败了
有什么建议吗?如果您使用的是VS 2012或更高版本,您应该使用vstest.console.exe来运行测试。Mstext.exe保留在那里以实现向后兼容性。使用vstest.console.e
之后,只需在*.test.cmake模块中使用tkl\u test\u assert\u true,即可将测试标记为成功或失败
此外,您可以使用\u scripts子目录中的运行程序脚本中的筛选参数筛选测试:
--path_match_filter <[+]regex_include_match_expression> | <-regex_exclude_match_expression>[;...]
--test_case_match_filter <[+]reg
我们的部分代码是时间敏感的,我们需要能够保留一些东西,然后在30-60秒内释放它,等等,我们只需执行time.Sleep(60*time.Second)
我刚刚实现了时间接口,在测试期间使用了时间接口的存根实现,类似于
然而,time.Now()在多个站点中被调用,这意味着我们需要传递一个变量来跟踪我们实际睡眠的时间
我想知道是否有另一种方法可以在全球范围内剔除time.Now()。也许通过系统调用来改变系统时钟
也许我们可以编写自己的时间包,它基本上围绕着时间包,但允许我们改变它
我们当前的实
我有一个没有显式创建控制器文件的路由。我的路线看起来像:
import Ember from 'ember';
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';
import vibrate from '../utils/utility-vibrate';
export default Ember.Route.extend(ApplicationRouteMixin, {
在TDD中有两个概念:伪对象和模拟对象。这两个概念用于您要测试的类与其他类、对象或数据库交互的情况
我的问题是:两者的区别是什么?我什么时候可以使用它们
编辑:
我找到了这个答案:
但我仍然对两者之间的区别感到困惑:
它们都创建了组件的实现,而光实现则是假的。但是,如果是假的话,他们所说的“快捷方式”的“轻实现”是什么意思呢?
模拟对象的工作方式与真实对象的工作方式有什么区别?例如,针对数据集的伪实现只会返回一组静态数据。模拟基本上是一个完整的实现,能够根据输入生成各种数据集。如果您正在模拟数
我正在使用EF4进行一些单元测试
var ctx= Effort.ObjectContextFactory.CreateTransient<TheContext>(Shared.Connection);
ctx.companies.AddObject(new company() { ID = 100, name = "Agent", is_agent = true });
ctx.SaveChanges(System.Data.Objects.SaveOptions.DetectCh
目前,我正在使用这些工具运行测试、代码覆盖率和文档:
单元测试:
茉莉花
许尼特
代码覆盖率:
伊斯坦布尔
点罩
文档:
Typedoc
当我尝试为前端和后端做所有模块化工作时,我们有多个bower组件和nuget包,当然每个组件都运行不同类型的测试和文档
现在我想做的是有一个专门的网站,它可以获取所有的测试结果和文档,并有一个专门的网站,所有的开发人员等都可以使用它作为参考点
有什么插件可以帮助我实现它吗
如果没有,你不知道我从哪里开始,因为我尝试了一点谷歌搜索,但没有运气。我使用
我有一个控制器,它从DB获取角色并分配给下拉列表
var items = (entities.tbllogins.GroupBy(a => a.Role).Select(a => a.FirstOrDefault())).ToList();//get count
ViewBag.drpitems = new SelectList(items, "Role", "Role");
return View();
在我看来,
@Html.DropDow
我试图验证名为CUTService的类中的groovy闭包是否具有正确的值:
mailService.sendMail {
to 'hey@example.com'
from 'hey@example.com'
subject 'Stuff'
body 'More stuff'
}
我已经看过了,但是他的语法产生了一个错误:
1 * mailService.sendMail({ Closure c -> c.to == 'hey@example.com'}
下面的单元测试失败。我正在打印请求和响应,并且可以确认MockRestServiceServer在调用端点时返回模拟的JSON。当我将测试更改为直接与服务器对话时,单元测试通过。不知道我做错了什么
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {Application.class, Beans.class})
public class BillingSyst
我正在学习RXJS5(候选版本)。我在单元测试中使用ASCII
对于失败的测试,是否有一个内置函数来显示actualASCII marbles字符串,而不是deep equal失败结果?如果我必须理解并编写一个预期的ASCII大理石字符串,那么在测试失败时显示实际的ASCII大理石字符串会很有用。这将有助于排除故障
我希望有一个内置的功能,实际上是相反的。在搜索文档和源代码时,我还没有找到任何东西
下面是一个例子,我修改它以获得一个失败的测试。它给出以下输出:
AssertionError: e
我试图模拟嵌套在子目录中的第三方库(在节点_模块中)。
我已经在\uuuuu mocks\uuuu/@exponent/ex navigation中创建了模拟。它位于我的node_modules dir旁边的顶层
我通过jest.mock('@exponent/ex-navigation')在测试文件中设置mock
由于某种原因,我无法让它使用模拟文件。我认为这与@exponent子目录有关。如果我将其更改为类似于fs的简单方式,它就会工作。jest似乎不支持模拟作用域包(更多信息)。所以你有两
我试图对一个接受枚举参数类型的函数进行单元测试,例如这样的函数
function consumeEnumValue(value: MyEnumType) {
//do something
}
但我不想将真实的枚举导入到测试代码中,我想使用带有虚构条目的模拟枚举。以下操作不起作用:
import { consumeEnumValue } from 'production-code.ts'
enum FictionalEnum {
foo,
bar,
}
describ
我正在尝试为我构建的react组件编写测试,该组件在类似这样的方法中使用navigator.geolocation.getCurrentPosition()(我的组件的粗略示例):
我正在使用,其中包括一个测试:
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
});
我是新手,但对angul
我想在bytes.Buffer.Write方法上模拟bytes.ErrTooLarge死机错误并测试死机处理。我曾试图写无限量的数据以超过内存,但后来整个测试崩溃了。其他选项是什么?听起来像是模拟对象的作业。在测试期间,使用此(badBuffer)代替bytes.Buffer
type badBuffer bytes.Buffer
func (b *badBuffer) Write(p []byte) (n int, err error) {
panic(bytes.ErrTooLar
我在新的Laravel项目中遵循TDD技术。因此,我有一组测试,涵盖我的控制器、模型类、服务等。大多数测试都是HTTP测试,所以我将它们存储在/tests/Feature目录中。此外,我还有一些单元测试,它们涵盖了非常具体的方法,这些方法不容易从HTTP测试中访问
如果我理解正确的话,每个HTTP测试都是功能测试,因为它涵盖了控制器中包含的许多类。在这种情况下,我是否应该为项目中的每个方法分别创建单元测试,即使HTTP测试已经涵盖了它?如果是,我能从中得到什么好处
提前感谢您的解释。创建单元测试
我有一个奇怪的情况,我不明白
在我的vue组件中,我使用“存储库/服务”进行API调用。它使用axios:
我将其导入到组件中:
从“AMComponents/repositories/repository factory”导入{RepositoryFactory};
const ContactsRepository=RepositoryFactory.get(“contacts”);
在方法addContact中,我这样使用它:
现在,,
我就是这样测试它的:
test(“addCont
我正在尝试在我的功能目录中配置一个单元测试项目,即
特征
活动
示例项目
ExampleProject.UnitTest
实施
单元测试项目中:UnitTest.cs[TestMethod]
在实现类中
公共字符串GetItem(str1、str2)
{
列出匹配项;
--在此中断--使用(var context=ContentSearchManager.GetIndex(“sitecore\u web\u index”).CreateSearchContext()
{
va
1 2 3 4 5 6 ...
下一页 最后一页 共 170 页