javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

c#-最小起订量-如何验证是否通过s设置了属性值

考虑此类:

public class Content
{      
   public virtual bool IsCheckedOut {get; private set;}
   public virtual void CheckOut()
   {
      IsCheckedOut = true;
   }

   public virtual void CheckIn()
   {
      //Do Nothing for now as demonstrating false positive test.
   }
}

Checkin方法有意为空。 现在,我有一些测试方法来验证调用每个方法的状态。

[TestMethod]
public void CheckOutSetsCheckedOutStatusToTrue()
{
    Content c = new Content();    
    c.CheckOut();
    Assert.AreEqual(true, c.IsCheckedOut); //Test works as expected
}

[TestMethod]
public void CheckInSetsCheckedOutStatusToFalse()
{
    Content c = new Content();
    c.CheckIn();
    Assert.AreEqual(false, c.IsCheckedOut); //Test does not work as expected
}

由于错误原因,第二次测试通过。 那么,如何使用模拟(moq)来验证CheckIn设置了IsCheckedOut属性?

谢谢。

编辑

需要说明的是:我有一个称为CheckIn()的方法,其作用是将IsCheckedOut状态设置为false。

您将在上面的测试代码中看到,即使我未将属性值设置为false,测试也将返回false。 这是预料之中的,这里没有错。

我认为我的问题特别是如何验证Check In()方法是否已将IsChecked Out属性设置为false? 这就是我所说的行为验证。

我相信某些评论建议做一些等同于状态验证的事情? 如果是这样,我不相信在我们可以简单使用的情况下完全嘲笑这一部分没有任何价值:

Content c = new Content();    
c.CheckIn();    
Assert.AreEqual(false, c.IsCheckedOut); //State verification

当然我可能是错的,所以请帮助我阐明这些概念:)

trans by 2020-08-12T01:17:35Z

语言不可知论-对于小型项目,TDD是否会大材小用?

我最近阅读了很多有关TDD的文章,但我还没有在其中出售。.我做了很多小型业余项目(仅我一个),我担心尝试做TDD是否太过分了 这样的事情。 尽管我看到过像3个执行TDD的开发人员的小型开源项目。 (尽管我看到了一些也可以进行TDD的单人项目)

那么,TDD总是一件好事吗?使用在什么门槛上有意义?

trans by 2020-08-09T08:16:35Z

用户界面-使用TDD原理在JavaScript中开发UI

在用JavaScript开发UI时,想出最好的方法来正确遵循TDD原则时遇到了很多麻烦。 最好的方法是什么?

最好将视觉与功能区分开吗? 您是否先开发视觉元素,然后编写测试,然后编写功能代码?

trans by 2020-08-09T05:45:29Z

单元测试-PHP中的测试驱动开发

我是使用PHP的网络开发人员。 我在C#桌面应用程序中使用“测试驱动开发”的经验有限。 在那种情况下,我们将nUnit用于单元测试框架。

我想开始在新项目中使用TDD,但我真的不确定从哪里开始。

您对基于PHP的单元测试框架有什么建议?对于TDD概念的新手,有哪些好的资源?

trans by 2020-08-06T00:15:44Z

当应用程序为100%CRUD时应用TDD

我经常遇到这个问题,而且我不确定该如何克服。 我真的很想开始学习和应用Test-Driven-Development(或BDD,等等),但似乎我要应用的每个应用程序几乎都只是标准数据库CRUD的东西,而且我不确定如何 继续应用它。 除了将对象持久存储到数据库之外,这些对象几乎什么也不做。 没有复杂的逻辑需要测试。 我最终需要测试一个网关来测试第三方服务,但是我想先完成应用程序的核心。

每当我尝试编写测试时,我只会最终测试可能不应该首先测试的基本内容(例如,getters / setters),但看起来对象没有其他东西。我想我可以测试持久性,但是这对我来说似乎永远都不对,因为您不应该实际访问数据库,但是如果您模拟它,那么您实际上就不会测试任何东西,因为您可以控制回退的数据。就像我看过很多示例,其中有一个模拟存储库,该模拟存储库通过循环并创建已知值列表来模拟数据库,并且测试验证“存储库”可以拉回某个值...没看到这样的测试要点,因为当然“存储库”将返回该值;它在课程中是硬编码的!好吧,我从纯粹的TDD角度来看(例如,您需要进行测试以表明您的存储库需要GetCustomerByName方法或任何其他内容,然后才能编写该方法本身),但这似乎是遵循教条,除了“方式”-除了证明一种方法的合理性之外,测试似乎没有做任何有用的事情。

我在想这是错误的方式吗?

例如,运行工厂联系人管理应用程序。我们有联系人,可以说我们可以向联系人发送消息。因此,我们有两个实体:ContactMessage,每个实体具有共同的属性(例如,名字,姓氏,用于联系的电子邮件以及用于消息的主题和正文和日期)。如果这些对象都不具有任何实际行为或不需要执行任何逻辑,那么在设计此类应用程序时如何应用TDD?该应用程序的唯一目的基本上是拉出联系人列表并将其显示在页面上,显示发送消息的表单等。我在这里没有看到任何有用的测试-我可以想到一些测试,但是为了说“看,我有测试!”,它们几乎就是测试。而不是实际测试某种逻辑(虽然Ruby on Rails很好地利用了它,但我并不认为测试验证是“有用的”测试,因为它应该由框架来照顾您)

trans by 2020-08-04T20:47:18Z

单元测试-开始TDD-挑战? 解决方案? 建议?

好的,我知道已经开始使用TDD了。.但是,我想我知道一般的共识是这样做,但是,在进入游戏领域时似乎存在以下问题:

  • 在处理集合时,即使基于仿制药等我们“知道”其正常工作的情况下,是否仍会测试明显的添加/删除/插入是否成功?
  • 有些测试似乎要花很长时间才能实现。例如,在处理字符串输出时,是否有“更好”的方式来进行此类操作? (例如,在解析之前测试对象模型,将解析分解为小操作并在其中进行测试)在我看来,您应该始终测试“最终结果”,但这可能千差万别,并且设置起来很繁琐。
  • 我没有可用的测试框架(工作不会花钱),所以我可以“练习”更多。 有没有可以免费用于商业用途的优质产品? (目前我正在使用良好的'ol Debug.Assert :)
  • 可能是最大的。。有时我不知道不会发生什么。 代码,或者将其保留,然后等待所有失败(这将花费更多)。

因此,基本上我在这里寻找的不是“随便做”,而是更多“我这样做了,遇到了问题,并通过此方法解决了。”。个人经历:)

trans by 2020-08-03T21:33:34Z

单元测试-用moq模拟虚拟只读属性

尽管可以手动完成,但我找不到方法,所以为什么不使用最小起订量呢?

trans by 2020-07-29T00:49:10Z

javascript-AngularJS +茉莉花:比较对象

我刚刚开始为AngularJS应用编写测试,并且正在Jasmine中进行测试。

以下是相关的代码段

ClientController:

'use strict';

adminConsoleApp.controller('ClientController',
    function ClientController($scope, Client) {

        //Get list of clients
        $scope.clients = Client.query(function () {
            //preselect first client in array
            $scope.selected.client = $scope.clients[0];
        });

        //necessary for data-binding so that it is accessible in child scopes.
        $scope.selected = {};

        //Current page
        $scope.currentPage = 'start.html';

        //For Client nav bar
        $scope.clientNavItems = [
            {destination: 'features.html', title: 'Features'},
        ];

        //Set current page
        $scope.setCurrent = function (title, destination) {
            if (destination !== '') {
                $scope.currentPage = destination;
            }

        };

        //Return path to current page
        $scope.getCurrent = function () {
            return 'partials/clients/' + $scope.currentPage;
        };

        //For nav bar highlighting of active page
        $scope.isActive = function (destination) {
            return $scope.currentPage === destination ? true : false;
        };

        //Reset current page on client change
        $scope.clientChange = function () {
            $scope.currentPage = 'start.html';
        };
    });

ClientControllerSpec:

'use strict';

var RESPONSE = [
    {
        "id": 10,
        "name": "Client Plus",
        "ref": "client-plus"
    },
    {
        "id": 13,
        "name": "Client Minus",
        "ref": "client-minus"
    },
    {
        "id": 23805,
        "name": "Shaun QA",
        "ref": "saqa"
    }
];

describe('ClientController', function() {

    var scope;

    beforeEach(inject(function($controller, $httpBackend, $rootScope) {
        scope = $rootScope;
        $httpBackend.whenGET('http://localhost:3001/clients').respond(RESPONSE);
        $controller('ClientController', {$scope: scope});
        $httpBackend.flush();
    }));

    it('should preselect first client in array', function() {
        //this fails.
        expect(scope.selected.client).toEqual(RESPONSE[0]);
    });

    it('should set current page to start.html', function() {
        expect(scope.currentPage).toEqual('start.html');
    });
});

测试失败:

Chrome 25.0 (Mac) ClientController should preselect first client in array FAILED
    Expected { id : 10, name : 'Client Plus', ref : 'client-plus' } to equal { id : 10, name : 'Client Plus', ref : 'client-plus' }.
    Error: Expected { id : 10, name : 'Client Plus', ref : 'client-plus' } to equal { id : 10, name : 'Client Plus', ref : 'client-plus' }.
        at null.<anonymous> (/Users/shaun/sandbox/zong-admin-console-app/test/unit/controllers/ClientControllerSpec.js:43:39) 

有谁知道为什么会发生这种情况吗?

另外,由于我是刚开始编写AngularJS测试,因此欢迎对我是将测试设置错误还是可以改进的任何评论。

更新:

包括ClientService:

'use strict';

AdminConsoleApp.services.factory('Client', function ($resource) {
    //API is set up such that if clientId is passed in, will retrieve client by clientId, else retrieve all.
    return $resource('http://localhost:port/clients/:clientId', {port: ':3001', clientId: '@clientId'}, {

    });
});

另外,我通过比较id解决了这个问题:

it('should preselect first client in array', function () {
    expect(scope.selected.client.id).toEqual(RESPONSE[0].id);
});
trans by 2020-07-28T06:03:25Z

asp.net mvc-如何使用Moq模拟会话对象集合

我正在使用shanselmann的MvcMockHelper类使用Moq模拟一些HttpContext的东西,但是我遇到的问题是能够在我的MVC控制器中为模拟的会话对象分配一些东西,然后能够在我的单元测试中读取相同的值以进行验证 目的。

我的问题是如何为模拟的会话对象分配存储集合,以允许诸如session [“ UserName”] =“ foo”之类的代码保留“ foo”值,并使其在单元测试中可用。

trans by 2020-07-22T18:10:16Z

如何对Django URL进行单元测试?

urls.py以外,我所有应用程序中的测试覆盖率均达到100%。对于如何为URL编写有意义的单元测试,您有任何建议吗?

FWIW当我尝试测试驱动开发并想在编写代码修复它们之前失败测试时,就出现了这个问题。

trans by 2020-07-22T16:14:14Z

单元测试-Android测试驱动开发

我在制作Android应用程序方面具有丰富的经验。 对于我的新项目,我们决定进行测试驱动开发(TDD)。 我一直忙于在Robotium上进行用户场景测试,并且效果很好,看起来也很容易。

对于单元测试,我尝试使用(MockContext Android类)模拟Context,但是无法这样做。 我浏览了该博客[http://sites.google.com/site/androiddevtesting/]和该[http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html ],这表明Android应用程序中的模拟仍然非常有限且困难,建议使用PowerMock,jMockit,JeasyTest或Roboelectric(与Mockito和Maven结合使用),甚至使用RoboGuice。

我想从你们那里获得任何建议,关于您认为哪种单元测试框架最适合测试Android应用程序。 (特别是测试Android类,可能会提供模拟上下文和其他模拟功能,以便使我的测试用例尽可能独立)。 任何建议或指示都会有所帮助。 谢谢

trans by 2020-07-20T23:36:30Z

CodeGo.net>如何迫使VS 2010跳过没有改变的项目的“构建”?

我们产品的解决方案有100多个项目(生产代码500 + ksloc)。 它们大多数是C#项目,但是我们也很少使用C ++ / CLI来与本机代码进行通讯。

重建整个解决方案需要几分钟。 没关系。 如果我想重新构建解决方案,我希望它确实需要一些时间。 完全重建之后,构建解决方案需要时间。 想象一下,我使用了完全重建,现在对我按Build的解决方案没有做任何更改(F6或Ctrl + Shift + B)。 如果没有变化,为什么要花35秒钟? 在输出中,我看到它开始“构建”每个项目-它没有执行真正的构建,但是它所做的事情会占用大量时间。

35s的延误真是让人头疼。 是的,我可以不使用构建解决方案而仅构建项目(Shift + F6)来缩短时间。 如果我在特定的测试项目上运行构建项目,那么我目前正在处理的项目将仅“花8秒钟”。 它要求我在正确的项目上运行项目构建(测试项目以确保也构建了相关的测试代码)。 至少ReSharper测试运行程序正确地认识到仅必须构建此单个项目,并且重新运行测试通常仅包含8s以上的编译。 我当前的编码Kata是:不要触摸Ctrl + Shift + B。

即使我不做任何更改,测试项目的构建也将花费8s。 之所以需要8s是因为它还“构建”了依赖关系=就我而言,它“构建”了20多个项目,但是我仅对单元测试或单个依赖项进行了更改! 我不希望它涉及其他项目。

有没有一种方法可以简单地告诉VS仅构建已进行某些更改的项目以及依赖于已更改项目的项目(最好将此部分作为另一个生成选项)? 我担心您会告诉我,这正是VS所做的,但是以MS方式...

我想改善我的TDD体验并减少编译时间(在TDD中,每分钟可以进行两次编译)。

为了使这一点更加令人沮丧,我正在一个团队中工作,在该团队中,大多数开发人员在加入Java项目之前都曾从事过Java项目。 因此,您可以想象当它们必须使用VS而不是Java中的完全增量编译时,它们会被激怒。 我不需要增量编译类。 我希望工作解决方案的增量编译。 特别是在像VS 2010 Ultimate这样的产品中,它要花费数千美元。

我真的不想得到像这样的答案:

  • 制定单独的解决方案
  • 卸载不需要的项目
  • 等等

我可以在这里阅读这些答案。 这些不是可接受的解决方案。 我们不为VS做出这样的折衷而付费。

trans by 2020-07-13T03:37:32Z

对单元测试/ TDD有用的设计模式?

阅读此问题有助于我巩固一些我在单元测试,TDD等方面一直遇到的问题。

自从遇到TDD开发方法以来,我就知道这是正确的方法。 阅读各种教程可以帮助我理解如何入门,但是它们一直都非常简单-并不是一个可以应用于活动项目的东西。 我所管理的最好的方法是围绕代码的一小部分编写测试-例如库之类的东西,这些代码由主应用程序使用,但没有以任何方式集成。 尽管这很有用,但它约等于代码库的5%。 如何进行下一步,以帮助我对主应用程序进行一些测试,几乎没有。

诸如“没有单元测试的大多数代码都是通过硬性依赖关系(即到处都是新功能)或静态方法构建的”之类的注释。 和“ ...在类之间,类中难以配置的对象之间进行高级别的耦合并不是罕见的。” 使我意识到下一步是了解如何解耦代码以使其可测试。

我应该在寻找什么来帮助我做到这一点? 我是否需要理解并开始实施一套特定的设计模式,以便进行更轻松的测试?

trans by 2020-07-01T09:01:11Z

SQL Server-如何对持久性进行单元测试?

作为从事测试驱动开发的新手,我经常对如何对数据库进行持久化测试感到困惑。

我知道从技术上讲这将是一个集成测试(而不是单元测试),但是我想找出以下最佳策略:

  1. 测试查询。
  2. 测试插件。 我如何知道插入失败的插入错误? 我可以通过插入然后查询来测试它,但是我怎么知道查询没错呢?
  3. 测试更新和删除-与测试插入内容相同

做这些的最佳实践是什么?


关于测试SQL:我知道可以做到这一点,但是如果我使用像NHibernate这样的O / R映射器,它会在用于输出查询的别名中附加一些命名疣,因为这有点不可预测,我不确定 我可以测试一下。

我应该放弃所有内容,只是信任NHibernate吗? 我不确定这是谨慎的做法。

trans by 2020-06-27T18:25:33Z

什么是演示TDD的好的示例类?

我需要就测试驱动开发做一个简短的介绍(2-4小时),并且需要提出一个小类,可以使用TDD方法进行构建。 该类必须相对较小,但可以“出售” TDD的概念。

如果有人在Microsoft.Net中阅读过James Newkirk的书“ Test-Driven Development for”,那么Stack示例就是完美的选择。 这是一小类,具有可管理的测试/要求列表,并且创建过程出售TDD(IMHO)。

我不想使用Stack示例或类似的数据结构(队列,列表等),以免影响Newkirk的工作。

因此,我正在为示例课寻找一些好主意。

谢谢。

trans by 2020-06-27T14:38:16Z

TDD:它会妨碍良好的API设计吗?

我从未编写过TDD代码,但是在SO上对此进行了大量的讨论。 我最大的担心是,一般而言,良好的API设计(在灵活性,易用性,接口的简单性和性能方面)似乎在某些方面处于后座地位,从而使代码成为可模拟的,超模块化的,超出了任何API使用所必需的范围 例如,TDD的支持者经常建议将事物作为参数传递,从API抽象的角度来看,被调用的方法应该“只是知道”,或者以易于测试的方式对类和方法进行分解。 ,这不一定是与问题领域最相关的方法。

对于对TDD和API设计都比较有经验的人:您是否发现TDD通常会妨碍良好的API设计? 如果是这样,您如何应对?

trans by 2020-06-24T02:57:27Z

c#-使用Rhino.Mocks模拟静态方法

是否可以使用Rhino.Mocks模拟静态方法?如果Rhino不支持此功能,是否有某种模式或某种方法可以使我完成相同的任务?

trans by 2020-06-23T22:15:16Z

tdd-Python unittest:以编程方式生成多个测试?

可能重复:
如何在python中生成动态(参数化)单元测试?

我有一个要测试的功能self.expected_pairs,以及一组预期的输入/输出对:

[
(2, 332),
(234, 99213),
(9, 3),
# ...
]

我希望这些输入/输出对中的每一个都可以使用自己的self.expected_pairs方法进行测试。 那可能吗?

这是我想要的,但是将每个输入/输出对强制进行单个测试:

class TestPreReqs(unittest.TestCase):

    def setUp(self):
        self.expected_pairs = [(23, 55), (4, 32)]

    def test_expected(self):
        for exp in self.expected_pairs:
            self.assertEqual(under_test(exp[0]), exp[1])

if __name__ == '__main__':
    unittest.main()

(此外,我是否真的想将self.expected_pairs的定义放在setUp中?)

更新:尝试使用doublep的建议:

class TestPreReqs(unittest.TestCase):

    def setUp(self):
        expected_pairs = [
                          (2, 3),
                          (42, 11),
                          (3, None),
                          (31, 99),
                         ]

        for k, pair in expected_pairs:
            setattr(TestPreReqs, 'test_expected_%d' % k, create_test(pair))

    def create_test (pair):
        def do_test_expected(self):
            self.assertEqual(get_pre_reqs(pair[0]), pair[1])
        return do_test_expected


if __name__ == '__main__':
    unittest.main()   

这是行不通的。 运行0个测试。 我是否对示例进行了错误的修改?

trans by 2020-06-21T21:33:48Z

红宝石-如何在没有Rails的情况下使用RSpec?

在没有Rails的RSpec的Ruby中执行TDD的过程是什么?

我需要一个Gemfile吗? 它只需要rspec吗?

Ruby 1.9.3

trans by 2020-06-21T12:51:19Z

测试-如何编写django测试意味着失败?

我有一个名为Thing的模型,其属性为name,我希望name是一个只有3个字符长的char字段。

我该如何编写测试?

class TestCase1(TestCase):
    def test1(self):
        thing = Thing(name='1234')

测试应该失败。 如何正确编写测试,以便该对象失败时通过测试?

trans by 2020-06-21T07:24:23Z

1 2 3 4 下一页 共4页