问题列表 - 第14024页

用假货或嘲笑进行单元测试?

我在编写测试套件时试图遵循良好的做法.中途我意识到我花了很多(大部分)时间在假物体上...我的大多数测试都是这样的

public interface ITemplateRepository
{
  string get GetGenericTemplate {get;}
}
Run Code Online (Sandbox Code Playgroud)


public FakeTemplateRepository : ITemplateRepository
{
   public string GetGenericTemplate ()
   {
     return "<xml>Complex</xml>";
   }
}
Run Code Online (Sandbox Code Playgroud)


[Test]
public void CanGetGenericTemplate()
{
  ITemplateRepository rep = new FakeTemplateRepository();
  Assert.IsNotNull(rep.GetGenericTemplate());
}   
Run Code Online (Sandbox Code Playgroud)


[Test]
public void GetGenericTemplateContains()
{  
ITemplateRepository rep = new FakeTemplateRepository();
Assert.IsTrue(rep.GetGenericTemplate().StartsWith("<xml>"));
}
Run Code Online (Sandbox Code Playgroud)

我实际上发现自己花了很多时间在FakeTemplateRepository上,确保它返回了我期待的实际内容.这是坏事吗?

这仍然是有效的单元测试吗?单元测试应该快速而简单,不是吗?但老实说,我不太确定,有一点可以肯定的是,它让我思考了数据的形状和内容.FakeRepository中的内容或多或少会反映我的制作内容,尽管是从文件系统中读取而不是在内存中.

如果事实上我正在做的是集成测试,那么我应该如何使用模拟进行单元测试呢?

对我(如果使用Mocks)我没有意义,我设置了期望,以便它调用方法并返回一个字符串?我错过了什么,但我没有看到太多的价值吗?如果我设置了无效的方法名称,代码甚至不会编译!

我真的对整个事情感到困惑,而且我对单元测试的看法现在已经完全模糊了所有这些概念.

任何人都可以用一个超级简单的例子展示假货和模拟如何融入套房吗?例如什么应该是单元测试,什么应该是集成测试?

谢谢

tdd unit-testing

8
推荐指数
2
解决办法
3502
查看次数

为什么我的防病毒程序没有检测到这种恶意行为?

我编写了这个C程序并在我的Windows系统上运行.我的系统被绞死了,甚至连任务经理都没有打开.最后,我不得不重启.这显然是一个恶意程序,但我的防病毒软件没有检测到这一点.为什么?

#include<unistd.h>
main() {
while(1)
    fork();
}
Run Code Online (Sandbox Code Playgroud)

antivirus fork

3
推荐指数
1
解决办法
613
查看次数

我可以使用内存区域来杀死iPhone泄漏吗?

我有一个C++类,我在我的iPhone应用程序中使用我的Objective-C++控制器.C++类对某些数据进行一些计算,返回结果,然后完成 - 但它会像疯了一样泄漏.我想知道我是否能够以某种方式利用Memory Zones(又名malloc区域又名allocWithZone)来解决这个问题.我的想法是将ObjC++对象分配到一个新区域,然后以某种方式让C++对象全部在这个新区域中自动创建.然后,当它返回时,我杀死该区域,并且所有内存将自动恢复,即使它已被泄露.

但是:文档似乎表明我是否在新区域X中分配了一个对象,它分配的对象也不会自动也在区域X中.如果这有意义,是否有人知道如何覆盖该行为以便所有后续的分配和该对象的mallocs将在新区X中?

编辑:

  1. 我应该注意,该线程将主要运行C++代码,一个庞大的代码库,并且此时杀死它中的所有泄漏并不经济,因为它自动从Java转换而且像疯了一样泄漏(重构)需要...).感谢"只是修复你的漏洞"的建议,但目前这并不实用.

  2. 内存不会通过ObjC分配泄露,但主要是通过C++数组新调用(也有几个直接的malloc).如果这有所作为.

iphone malloc memory-leaks memory-management

0
推荐指数
1
解决办法
451
查看次数

渴望在ActiveRecord中加载多态关联

这是我第一次使用Rails,我想知道是否可以在一个SQL查询中加载一个多态关联?它们之间的模型和关联足够基本:资产模型/表可以通过多态关联引用内容(图像,文本或音频),即

class Asset < ActiveRecord::Base
  :belongs_to :content, :polymorphic => true
end

图像,文本,音频定义如下:

class Image < ActiveRecord::Base
  :has_one :asset, :as => :content
end

当我尝试加载图片时,请这样说:

Image.first(
      :conditions => {:id => id},
      :include => :asset
)

它指定了两个查询,一个用于检索Image,另一个用于检索资产(FYI,如果我指定a,也会发生这种情况:joins).根据我的理解,ActiveRecord这样做是因为它不知道Image和Asset之间存在一对一的关联.有没有办法强制连接并一次检索2个对象?我也尝试使用自定义选择连接,但我最终必须手动创建ActiveRecord模型及其关联.

ActiveRecord是否提供了这样做的方法?

activerecord ruby-on-rails polymorphic-associations

6
推荐指数
1
解决办法
5011
查看次数

"git push"失败:"你没有指定任何refspecs推"

我在projectlocker上设置了一个git项目来推送我的git文件.然后我进入了初始化git项目并暂存我的文件的目录.最后我尝试使用此命令将项目推送到projectlocker:

$ git push git-smichaels@free5.projectlocker.com:helloworld.git
Run Code Online (Sandbox Code Playgroud)

它会生成此错误:

warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated.  This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: …
Run Code Online (Sandbox Code Playgroud)

git git-push

2
推荐指数
1
解决办法
6949
查看次数

4
推荐指数
1
解决办法
1万
查看次数

单元测试代码覆盖率 - 您有100%的覆盖率吗?

您的单元测试是否构成100%的代码覆盖率?是或否,为什么或为什么不呢.

unit-testing code-coverage

45
推荐指数
9
解决办法
3万
查看次数

SQL Server 2005也安装了Visual Studio 2005吗?

我刚刚安装了SQL Server 2005,它也安装了Visual Studio 2005.这有什么意义?SQL Server安装中是否有可以阻止此操作的选项.如果我现在卸载Visual Studio会弄乱任何东西吗?如果我现在也安装Visual Studio 2008怎么办?

installer visual-studio-2005 sql-server-2005

1
推荐指数
1
解决办法
3727
查看次数

如何在Swing java中添加一行JTable中的按钮

我已经创建了一个带有JTable的swing GUI,其中有一些行和Columns.我应该如何在JTable中添加一个按钮?

java swing jtable

26
推荐指数
3
解决办法
8万
查看次数

如何将div放在另一个div的中心?

我想在另一个div的中心水平放置一个div.

    <div id="container">
        <div id="centered">
            hello world;
        </div>
    </div
Run Code Online (Sandbox Code Playgroud)

我用"margin:0px auto"技巧尝试了以下风格,但它只适用于FF,而不适用于IE.

    div
    {
        border-width: 2px;
        border-style: solid;
    }
    #centered
    {
        margin: 0 auto;
        width: 30px;
    }
    #container
    {
        width: 100px;
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个跨浏览器?

html css

3
推荐指数
2
解决办法
1万
查看次数