前一段时间,我破坏了几个单元测试,当时我对它们进行了重构,使它们更加完善——每个测试的意图不再清晰。似乎在测试的可读性和可维护性之间有一个折衷。如果我在单元测试中保留重复的代码,它们的可读性会更好,但是如果我更改了,我将不得不跟踪并更改重复代码的每个副本
你同意这种权衡存在吗?如果是这样,您希望您的测试是可读的还是可维护的?可读性对于测试更为重要。如果测试失败,您希望问题显而易见。开发人员不应该费力地通过大量考虑因素的测试代码来确定失败的内容。您不希望您的测试代码变得如此复杂,以至于需要编写单元
我知道TDD风格是先编写测试,看到它失败,然后去把它变成绿色,这是很好的东西。有时候它真的对我有用
然而,特别是当我在试验一些东西(例如,不确定设计,不确定它是否能工作)或疯狂地编写代码时,我不想编写单元测试,这会破坏我的流程
我倾向于稍后编写单元测试,尤其是在事情变得太复杂之前。另外还有一个问题,就是以后再写通常更无聊
我不太确定这是否是一个好方法(肯定不是最好的)
你觉得怎么样?您是否稍后编写单元测试代码?或者你是如何处理这个流问题或者实验设计/代码阶段的。我已经在事后编写了测试。迟做总比不
当我编写代码时,我只编写我需要的函数
这种方法也适用于写作测试吗
我应该为我能想到的每一个用例提前编写一个测试,只是为了安全起见,还是应该在遇到用例时只为它编写测试?是的,YAGNI绝对适用于编写测试
例如,我不编写测试来检查任何属性。我假设属性是以某种方式工作的,在我找到一个不同于标准的属性之前,我不会对它们进行测试
你应该总是考虑写任何测试的有效性。如果写测试对你没有明显的好处,那么我建议你不要。然而,这显然是非常主观的,因为你可能认为不值得,其他人可能认为非常值得努力
另外,我是否会编写测
考虑以下几点:
new SUT(null, null, new List<IObjectBeingMocked>() { mockObjectOne.Object, mockObjectTwo.Object })
new SUT(null,null,new List(){mockObjectOne.Object,mockObjectTwo.Object})
我的SUT(测试中的系统)需要一个对象列表作为第三个参数。这些应该是模拟的,因为我对这些设定了一些期望
我该如何清除它,以便
嗨
我们是一个小型TDD团队。
我们在墙上安装了一个LCD屏幕,我们希望它能够显示我们构建的状态以及当前的代码覆盖率
有没有现成的工具可以提供这个功能?
如果不是的话,这是不是很直接的发展我们自己
我们正在使用TFS 2008
干杯 在构建结束时
我们汇总了所有相关信息
我们将此信息插入SQL Server表中
查看结果
为了查看结果,我们创建了一个简单的Excel文件
在Excel中,我们从BuildServer表中获取最新的100个结果。在这里,我们选择每30分钟刷新一次查询(创建查询
标签: Unit Testing
.net-2.0c#-2.0rhino-mocks-3.5arrange-act-assert
我试图模拟一个数据层方法。该方法将一个字符串和两个列表作为参数,并根据存储过程的结果填充这些列表。另外,我仍然使用VS2005的C2.0,并且在.NET2.0中使用RhinoMocks3.5。如果可能,最好使用AAA格式
所以,是的,我想做的就是模拟一个接口方法,它将向参数列表中添加几个伪对象并返回。不幸的是,在阅读了Rhino Mocks文档之后,我几乎不知道如何做到这一点。Rhino对我来说是一个难以理解的谜题盒,没有例子我就无能为力;我找不到的例子
有人知道我如何做到这一点吗?你可以在.N
我看过其他类似的问题,它们似乎都是VisualStudio2010的预RTM(或者它们没有真正的答案)
我已经下载了Gallio的最新版本,我正在尝试使用它运行我的MS测试项目
我在MS测试项目中将Gallio添加到我的引用中,然后进行完整构建,然后在Gallio中打开已编译的dll
然后我试着运行我的测试,但它们没有运行。我没有任何错误,只是他们失败了
它说,218个测试-0通过-1失败-0不确定-0跳过
我检查了运行时日志,它说需要禁用的galio.VisualStudio.Shell。我检
使用Visual Studio 2010,是否有一种方法可以在本地构建解决方案后自动运行解决方案中的所有单元测试?您可以录制宏来执行此操作。在宏中,您将运行构建,然后启动单元测试。然后您可以运行宏,一步完成所有操作。有关更多详细信息,请查看Tools->Macros
编辑
您还可以录制宏的键盘快捷键,我认为您可以使用现有的键序列,例如用于构建的CTRL-SHIFT-B。因此,如果您想覆盖CTRL-SHIFT-B的默认行为,这是一种方法。您也可以尝试此加载项:这些宏中的一个应该满足您的需要:
我正在从现有站点重新设计一个站点,并且我正在编写验收测试来证明用例,并确保我不会丢失任何功能。该站点有几个Quartz作业,这些作业在一天中被触发,并对DB记录执行处理
对于我的测试策略,我可以访问现有站点和新站点,我的计划是针对现有站点执行几个用例中的每一个,当测试通过时,我将能够使用这些测试来验证新站点的功能
这是陷阱
我有源代码,但我将在工作站点上运行测试。我想做的是触发需要运行的Quartz作业,然后查询DB以确保满足所有业务规则和用例流。在验收测试中,我是否可以在远程服务器上以编程方式
这似乎是一件很简单的事情,我几乎可以肯定这样的事情一定存在。我只是不知道在哪里能找到它。另一方面,也许有技术上的原因,这是不可能的,我只是没有看到他们
但基本上,在我看来,如果给定一个特定的单元测试,可以(在类似CI服务器的帮助下)查看影响测试红/绿状态的提交历史,这将非常有用。所以,假设我想看到单位文本X的历史;我可能会看到这样的历史:
Revision | Date | Test X Status
-------------------------------------
123
我有一个使用typemock 5.4.5.0的单元测试,它正在测试一个创建服务。创建服务在其构造函数中传递给验证服务。验证服务返回具有布尔属性IsValid的对象。在我的单元测试中,我模拟验证服务调用以返回一个IsValid设置为true的实例。创建服务有一个if语句,用于检查该属性的值。当我运行单元测试时,从验证服务返回的对象将其属性设置为true,但当执行if语句时,它将其视为false
我可以通过调试单元测试来验证这一点。验证服务返回的对象确实将其IsValid属性设置为true,但它完全
我有80多个VS2010解决方案,每个解决方案都包含一些单元测试项目。
在构建过程之前,所有解决方案都被合并到一个大型解决方案中。
所有测试(或某些测试子集)都是在成功构建之后执行的
我想为所有测试启用测试代码覆盖率,以获得所有输出程序集的精确代码覆盖率
我的问题是:如何在不使用VisualStudio的情况下启用代码覆盖率
注意:我正在使用TFS2010(MSBuild)构建合并的解决方案。VS 2010 Premium安装在生成服务器上。MSTest用于执行测试 你可以用JetBrain的。
如何编写与数据库对话的单元集成测试。e、 g:
public int GetAppLockCount(DbConnection connection)
{
string query :=
"SELECT"+CRLF+
" tl.resource_type AS ResourceType,"+CRLF+
" tl.resource_description AS ResourceName,"+CRLF+
我正在做一个ASP.NETMVC2项目,我想对它做一些单元测试。我试图测试我的LogOnController,但遇到了一些困难。在我的LogOnController中,我使用AccountMembershipService作为
AccountMembershipService MembershipService = new AccountMembershipService();
if (MembershipService.ValidateUser(model.UserName, m
我希望能够在Jenkins中执行基于行为的测试场景。Behat本身是使用PHP运行的单个可执行文件(Behat.phar)
在哪里可以放置Behat,使其位于Jenkins文件夹结构中?我唯一能想到的地方是:“C:\ProgramFiles(x86)\Jenkins\jobs”。有谁有更好的建议吗
我查阅了Jenkins文档,没有找到任何关于此主题的内容。将Behat安装在您通常使用的任何位置(例如,C:\Program Files(x86)\Behat\Behat.phar),然后将系统环境变
我发现这是解决我问题的完美办法。它允许您轻松地存根REST服务响应。
现在我需要在我们库的PHP版本中复制相同的测试用例集。您知道PHP中有任何类似的库/框架吗?您可以使用。Guzzle是一个PHP HTTP客户端&用于构建RESTful web服务客户端的框架。问题是您可以创建响应对象。在这个图书馆里,你有一个。您只需创建所需的Guzzle响应(选择所需的状态代码、内容等),并模拟HTTP客户端,使其返回您刚刚创建的响应对象
如果你阅读了文档,似乎有,尽管我从未使用过
模拟对象引入了一种很好的方法来对某些程序单元进行深入的行为测试。
您只需将模拟的依赖项传递给被测试的单元,并检查它是否像应该的那样与依赖项一起工作
让您有两个类别A和B:
public class A
{
private B b;
public A(B b)
{
this.b = b;
}
public void DoSomething()
{
b.PerformSomeAction();
if(
在Vojta Jina演示指令测试的优秀存储库中,他在模块包装器之外定义了指令控制器。请看这里:
这难道不是一种糟糕的做法并污染了全局名称空间吗
如果一个人有另一个地方,它可能是合乎逻辑的叫什么TabsController,这不会打破东西吗
上述指令的测试可在此处找到:
是否可以将指令控制器与指令的其余部分分开测试,而不将控制器放置在全局命名空间中
最好将整个指令封装在app.directive(…)定义中。好问题
因此,这是一个常见的问题,不仅涉及控制器,还涉及指令可能需要执行其工作但不一定
我想从我的自定义库中监听一个事件,并将其作为单元测试通过或失败的基础->例如,如果我有一个登录方法,我想监听LoginSAccesed或LoginSFailed,并相应地通过/失败我的单元测试。有什么线索可以让它工作吗?取决于您使用的框架。如果您使用最小起订量,您可以这样做:
someMockObj.Raise(m=>m.MyEvent += null, anyParam)
似乎您想要测试代码的行为,所以库是一个会引发一些事件的依赖项。我会模拟库,像那样引发事件,并在引发事件时测试代码的
我想为一个类编写单元测试。我在项目中使用StructureMap(2.6.3),我对此有一些问题
对于测试,我使用Nunit(2.6.0.12054)和Rhinomock(3.6)
通常,我将依赖项注入类的构造函数中,然后在单元测试中很容易用mock替换依赖项。但也有一些情况下我无法做到这一点,我无法控制何时创建被测试的类。在这些情况下,我使用ObjectFactory.GetInstance()获取依赖项
public class MyClass
{
public int MyMeth
如何在unix中提取两个带引号的单词之间的字符串
它的一个样本如下。请注意,文件中有一个pragraph,下面的字符串应该从中提取出来
“ABC”:正确,“EFG”:“1.0.1”,“XYZ”:
要提取:“EFG”:“1.0.1”以下内容将从逗号分隔的文件中提取第二个字段:
awk-F,'{print$2}'/my/file您好。这很难回答,因为问题与示例不匹配。两个带引号的单词之间的字符串将是:true,“EFG”:“1.0.1”。看起来您似乎在寻找逗号之间的字符串……这将是一个简单的问题。当
我想知道是否存在类似的情况:
在VisualStudio中调试时,如果它能够将对象(其所有属性和值)复制到内存中,那将非常好。我在想,你可以在代码中加一个断点->右键单击对象->单击“将moq创建到剪贴板”
然后,您可以转到单元测试,粘贴文本,该文本将粘贴代码以创建具有所有这些属性的对象
我想这将节省大量的时间,并且对于修复bug非常有用
我在单元测试中发现的困难之一是创建模拟对象的手动过程。如果您发现创建模拟对象很繁重,那么您的设计或使用模拟对象的方式可能存在问题。您不应该为简单的“值”对象创
我刚刚升级到Xcode 6 beta 4,Swift编译器现在支持它
这给我带来了一个问题,因为我的单元测试现在无法编译(因为类不是公共的)
简单的解决方案当然是将所有测试的类公开,但这感觉像是一种黑客行为(我个人的偏好是即使在非公开类上也编写单元测试)
在.NET和Java中,通常可以允许单元测试程序集级别(或Java/OSGi中的捆绑包级别)从单元测试程序集访问被测程序集。我不明白如何在Swift中做类似的事情。我真的必须公开所有类才能进行单元测试吗?您只需将源文件从目标添加到测试目标。然后
我正在努力找出如何最好地测试使用Alamofire帮助与服务器数据同步的应用程序
我希望能够测试使用Alamofire并处理来自服务器的JSON响应的代码。
我想模拟这些测试,这样我就可以向这些测试提供预期的响应数据,而不会产生真正的网络流量
这篇博文()描述了在Swift中模拟对象是多么容易,但我不确定如何使用Alamofire及其链接响应来实现这一点
我会嘲笑经理吗?请求?回应?任何帮助都将不胜感激 等待@mattt的回答我发布了一个代码示例
假设我们有一个客户机类,负责调用一个简单的web
是否有一种方法可以按照预定义的顺序在GoLang中执行测试用例
附言:我正在为事件的生命周期编写测试用例。所以我有不同的api用于所有的凝乳操作。我希望以特定的顺序运行这些测试用例,因为只有创建了事件,才能销毁它
我还可以从一个测试用例中获取一些值,并将其作为输入传递给另一个测试用例。(示例:-要测试delete event api,我需要一个在调用create_event test case时获得的事件\u id)
我是刚来戈朗的,有人能给我介绍一下吗
提前感谢这样做的唯一方法是将所有测试封装
是否有一个选项可以将mocha设置为在it()函数中未提供expect时将测试报告为失败
我们的想法是这样的:
使用desc和回调函数添加一个it()
由于回调中未设置预期,因此it()报告为失败
增加了期望值
由于没有实现,因此未达到预期,it()仍报告为失败
增加了实现
it()报告为成功
重构
所以,主要目的是在进行规范化TDD样式的开发时,新添加的测试被报告为失败,直到设置了预期(或者测试集为挂起,没有回调或跳过()),这再次报告为失败,一旦实现完成,则报告为成功
我所看到的it()在没
我对我的定制聚合物组件进行了以下单元测试:
调查
描述(“”,函数(){
var调查;
描述('网络',函数(){
每次之前(功能完成){
测量=固定装置(“网络”);
})
它('should work',function(){
期望(调查.$.dog).to.exist;
});
});
});
您可以返回一个承诺,而不必立即期待:
it('should work', function() {
return expect(survey.$.dog).should.eventual
我正在向现有应用程序添加单元测试。类关系如下所示:
class TopClass creates class A and B and common class AB;
class A creates class A1, A2, A3, A4 and AB;
class B creates class B1 and AB;
public class EntryPoint() {
AB ab = new AB();
Provider<TopClass> provideTopC
我使用的是GWT2.7,其中我的视图如下所示:
文本搜索视图中的公共类
扩展ViewWithHandlers
实现InContextSearchPresenter.MyView
{
@尤菲尔德
文本框搜索值字段;
私有最终小部件m_小部件;
界面粘合剂
扩展UiBinder
{
}
@注入
public InContextSearchView(活页夹)
{
m_widget=binder.createAndBindUi(这个);
searchValueField.addKeyPressHandl
我以前使用过这种技术,并明确指定了所有配置。日志表明它正在创建数据源并加载脚本:
o.s.j.d.e.EmbeddedDatabaseFactory - Starting embedded database: url='jdbc:h2:mem:balancer;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'
o.s.j.d.i.ScriptUtils - Executing SQL script from class path r
我想为这个函数创建一个单元测试,
下面是我的单元测试用例:
get_ue_supported_srvcc([]) ->
?SRVCC_3GPP_NONE_SUPPORT;
get_ue_supported_srvcc([#sip_contactV{extensionsP = EP} | T]) ->
case b2bLib:support_tags_to_value(EP) of
?SRVCC_3GPP_NONE_SUPPORT ->
g
我对MobX InjectDecorator的理解是,使用Ezyme,我应该能够在单元测试中简单地初始化一个存储,然后作为道具传递给我正在安装的组件。[src:并滚动到集成测试部分。]但我一直无法获得存储!错误。这往往是一个问题,特别是如果我注射多个商店
因此,在我的组件中:
export default inject('errorStore', 'someOtherStore', 'andTheThirdStore')(observer(MyComponent));
我的测试应该是这样的
i
我正试图使用MockBackend为我的服务编写一个单元测试,每次我得到一个未定义的响应。任何帮助都将不胜感激。
我已经检查了下面所有的解决方案,与我的相比,我真的没有看到太多的差异
这是我的服务:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { SomeObject } from './someObject';
@Injectable()
export
我有一个函数,可以对对象中的信息执行计算(比如说myFunctionThatIWantToTest())。我的主要问题是,如果我正在为这个函数编写测试,我应该保存一个示例对象来运行计算,还是创建一个存根
我询问的原因是函数所操作的对象包含一个复杂的大结构,这是更复杂计算的结果,例如:
object=functo(object)通过创建一个大的数字表和其他结果更新对象
result=myFunctionThatIWantToTest(object)使用那个大表来获取结果
我是TDD的新手,所以这就
我们正在创建一些单元测试来测试我们的Xamarin C#代码,并希望在连接到Jenkins服务器的实际目标设备(Android或iOS)上自动运行这些单元测试(Jenkins),而不是在模拟器上。有各种单元测试框架(Touch.unit、XUnit、NUnit)来帮助生成单元测试应用程序,但是如果不使用Xamarin的测试云(我们将使用它进行UI测试,但我们更愿意在内部进行单元测试),我无法找到在实际设备上运行这些单元测试的方法
Xamarin Studio(Mac)是否有命令行选项,说明“在指
通常,像ExUnit这样的单元测试应该是自包含的,带有输入、函数调用和期望的输出,这样测试就可以在任何系统上运行,并且无论环境如何,都可以正确地进行测试
另一方面,如果您的应用程序执行系统调用,例如使用Elixir的System.cmd/3或Erlang的:os.cmd/1并处理结果,那么您的测试可能会由于不同/更新的二进制文件、变化的环境、不同的操作系统等原因而得到不同的结果
当然,在这些情况下测试失败是好的,这样可以增加对真实生活情况的覆盖。然而,在开发时,您希望首先让您的函数做正确的事情,
如何在单元测试的上下文中设置UserData
var context = new Mock<IDialogContext>();
context.Setup(c => c.Activity).Returns(() => new Activity());
context.Setup(c => c.UserData).Returns(() => ?);
var context=newmock();
Setup(c=
我开始在SystemVerilog中实现设计,但就测试而言,我有点迷失了方向。我尝试使用直接的SystemVerilog进行验证,但似乎有限:
通过查看日志可以发现错误(即使是$error和assert也不要停止模拟),因此很容易遗漏错误
我无法(?)运行所有测试,因为Vivado只允许使用一个作为活动测试
我可以把所有的东西都放在单一测试模拟中,但调试的波形似乎太长了,因为它混合了各种测试
我可以尝试创建自己的框架,但这听起来像是重新发明轮子,这是个坏主意
我知道,但它似乎与昂贵的模拟器,
我不熟悉单元测试和模拟数据。我有两个模拟回购协议,我是这样设置的:
[Test]
public void TestRun()
{
_UserRepo.Setup(x => x.GetById(RequestCache, It.IsAny<Guid>())).Returns(new User
{
Id = Guid.NewGuid()
});
_repo.S
我将VisualStudio的测试资源管理器与Machine.Specifications一起使用,并希望按Subject属性组织测试。当按特征组织测试时,所有测试都按主题分组,但它们也列在类名称trait下。也就是说,所有带有Subject属性的测试将显示两次:一次在ClassName trait下,一次在Subject trait下。我只想展示受试者的特征
搜索筛选器似乎允许您显示/隐藏具有给定筛选器的测试(即搜索:Trait:“Subject”或-Trait:“Subject”),但似乎无
我试图在这里就S.O.提出的问题尽可能具体和有帮助。但对于这一个问题,这几乎没有任何意义,因为我完全不知道为什么会发生这种情况
它发生在任何/每次测试中(即使是“空白”测试)。我已经尝试(卸载和)更新unity没用
无论如何,下面是异常的堆栈跟踪:
2017.11.16 14:54:24.308 ERROR System.Reflection.TargetInvocationException: Uma exceção foi acionada pelo destino de uma cha
我正在开发一个Rust库,它提供对一些硬件设备的访问。有两种设备类型,1和2,类型2的功能是类型1功能的超集
我想针对不同的情况提供不同的测试套件:
没有连接设备的测试(基本的健全性检查,例如CI服务器)
测试共享功能(需要类型为1或2的设备)
类型2专用功能测试(需要类型2的设备)
我使用特性来表示这种行为:默认特性测试无设备和可选特性测试类型一和测试类型二。然后我使用cfg\u attr属性忽略基于所选功能的测试:
#[test]
#[cfg_attr(not(feature = "te
我正在单元测试一个正在返回2个结果集的存储过程
我怎样才能用H2做到这一点?
我已经创建了一个别名,但当我返回结果集数组时,它不起作用
public static ResultSet[] createDummyStoredProc(
Connection connection,
String one,
String two,
String three,
String four) {
Statement statement
我正试图针对aspnet core 2.2编写一些集成测试。我想使用从普通启动类继承的TestStartup类来配置用于测试目的的资源和服务
一个简单的例子(可以在这里找到:):
我有一个包含两个项目的解决方案:
IntegrationTestingWeb(一个基本的aspnet mvc应用程序)
集成测试(一个测试项目)
我有一个使用Web Startup类的测试,并断言OK从/Home/Privacy
[Test]
public async Task GetPrivacy_Through_N
我试图运行Xamarin的单元测试,但未能使其正常工作。我将以下nuget包添加到我的项目中:
MSTest.TestAdapter
MSTest.TestFramework
许尼特
我可以在测试列表中看到我的单元测试。但是,当我开始运行单个测试时,我得到以下消息:
没有测试与给定的testcase筛选器FullyQualifiedName=
在研究了一下构建部分后,我发现了以下信息:
警告NU1701:包“MSTest.TestAdapter 1.4.0”是使用“.NETFramework
假设我有一个简单的基于文件的数据库Monad。我将对其进行如下定义
newtype MyDbFileBased a = MyDbFileBased {
unMyDbDbFileBased :: ExceptT MyDbFileBasedError (ReaderT MyDbFileBasedEnv IO) a
} deriving (
Functor
, Applicative
, Monad
, MonadError
Expecto允许您通过CLIArguments设置参数,也可以覆盖其defaultConfig。其中一个参数是--summary。目前,我只是直接传递“-summary”并将其与argv合并,但是否有一个可以覆盖的参数(我假设为“printer”)?那样的话,怎么办?这就是我现在所做的:
open Expecto
open Expecto.Impl
open Expecto.Logging
[<EntryPoint>]
let main argv =
let defaul
我习惯用Clojure和Leiningen
但是我有一个新的项目,我用LightMod启动了它。它使用CLI工具和DEP
这是可行的,但我现在想添加一些单元测试
下面是我的deps.edn文件(略为简化的版本):
{:paths ["src" "resources"],
:aliases
{
:dev
{:extra-deps
{orchestra #:mvn{:version "2018.12.06-2"},
expound #:mvn{:version "0.7.2
我试图调试失败的测试用例,但IntelliJ不会在断点处停止。它曾经为同一个项目工作,但突然停止了工作
我试图使缓存无效/重新启动,但遗憾的是,测试运行时没有进入调试模式。
我还试图通过删除.idea文件夹重新导入我的项目。同样的错误也会出现。为您正在使用的运行配置添加更多详细信息,即哪个断点不能正常工作。启动调试时,它们是否有复选标记?在启动调试之前,请确保已生成项目。还要确保启动前部分配置了构建步骤。如果问题仍然存在,请提供一个示例项目。请为您正在使用的运行配置添加更多详细信息,说明哪个断点
下面的测试运行,测试成功,但我不明白为什么
很明显,whatIWouldLikeToCapture将运行并给出一个空流量,因为privateMethod具有模拟内容。但是拦截器说它没有运行,也没有参数
为什么在verify(mockedProvider,times(0))中使用times(0)。什么是喜欢的捕获(captor.capture())
import org.junit.jupiter.api.Test
导入org.mockito.BDDMockito.given
导入org.mock
1 2 3 4 5 6 ...
下一页 最后一页 共 168 页