我已经从同一家公司的一个团队转移到另一个团队。 在老队伍(hardcore c ++),我们做了大量的unit testing。 在我的新团队(也是C ++)他们做functiontesting。 在审查期间,他们拒绝我的代码,因为unit testing。 大部分团队都有兴趣学习新的东西,但不是那些是VIP的人,而且有遗留的开发者方法。 他必须在提交之前接受代码。 他抵制变化。 build议吗? //更新:我会在这个主题中通知我的任务发生了什么,但请理解这是一个大公司,这需要时间。 只是为了澄清,我做的testing是好的,它一直在其他团队工作。 我对此并不陌生。 有时我需要制动依赖性导致代码它简直废话。 在C ++中,你有时必须这样做。 只是因为testing,这可能会引起产品代码的变化。 我相信有unit testingcertificate这种简单的变化。 有没有比这更好。 //更新2:感谢大家的好build议,显然这里没有银弹(大部分团队都信服,但是2位高级(15y +)的开发人员仍然反对,我会就此进行简短的讨论。支持我,所以我希望那些家伙只会同意:)放松一下,我开始学习ruby:)
我创build了与“iPhone开发指南”一致的OCUnittesting。 这是我想要testing的课程: // myClass.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface myClass : NSObject { UIImage *image; } @property (readonly) UIImage *image; – (id)initWithIndex:(NSUInteger)aIndex; @end // myClass.m #import "myClass.m" @implementation myClass @synthesize image; – (id)init { return [self initWithIndex:0]; } – (id)initWithIndex:(NSUInteger)aIndex { if ((self = [super init])) { NSString *name = [[NSString alloc] initWithFormat:@"image_%i", aIndex]; NSString […]
我对Python和Django都是新手,我正在通过创build一个饮食pipe理网站来学习,但是我已经完全被unit testing运行所击败。 我发现的所有文档和博客都表示,只要它可以从tests.py中发现,tests.py就与models.py和TestCase TestCase的子类TestCase位于同一个文件夹中,它应该全部自动获取。 这不是我的工作,当我运行manage.py test <myapp>它没有find任何testing。 我在自己的软件包中开始了所有的testing,但是已经简化了所有testing,只是在我的tests.py文件中。 目前的tests.py如下所示: import unittest from pyDietTracker.models import Weight from pyDietTracker.weight.DisplayDataAdapters import DisplayWeight class TestDisplayWeight(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testGetWeightInStone_KG_Correctly_Converted(self): weight = Weight() weight.weight = 99.8 testAdapter = DisplayWeight(weight) self.assertEquals(testAdapter.GetWeightInStone(), '15 st 10 lb') 我已经尝试了inheritanceDjango TestCase类,但是这也不起作用。 我正在使用Django 1.1.1,Python 2.6,我正在运行Snow Leopard。 我确定我错过了一些非常基本和显而易见的事情,但是我无法弄清楚什么。 有任何想法吗? 编辑:只是一个快速更新后的评论 INSTALLED_APPS = ( […]
我已经阅读了许多关于unit testing的乐趣和真棒点。 我的问题是,有没有人反对unit testing有一个很好的论点?
我正在testing一个商业服务与TestNG,在春季启动应用程序的mockitounit testing。 应用程序是多模块弹簧引导项目。我正在为业务模块编写unit testing。 我已经在pom中添加了以下相关性testing, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>${testng.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>${javaxel.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.servlet</artifactId> <version>${javax.servlet.version}</version> <scope>test</scope> </dependency> 我的包装注释看起来像 @Service @Transactional @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Inherited public […]
Visual Studio 2010,x64机器,使用内置的Web服务器来托pipe一个使用内置testing框架进行unit testing的WCF服务。 我有一个XML文件,我的testing需要加载运行。 我将这个文件包含在testing项目中,并将文件设置为“内容”,并且“始终复制到输出目录”。 此文件复制到bin \ debug目录罚款。 但是,当我执行testing时,xml文件不在那里。 它不是在项目的bin \ debug文件夹中查找,而是在testing的工作目录C:\ Projects \ SAP Reapprovals \ TestResults \ name_machine 2010-12-06 13_45_43 \ Out中查找它。 。 有没有办法强制这个文件复制,还是我需要从testing内完全限定参考? TIA! 詹姆士 更新 我设置了DeploymentItem属性,但该文件仍然不会被复制。 但是,这看起来像我想要的…任何想法,为什么这是行不通的? 我的testing代码: [TestMethod] [DeploymentItem("SAP – GS3 format.xml")] public void TestProcessSapRoles() { // I get a 'file not found' error here, and when // I […]
我有一个枚举开关或多或less像这样: public static enum MyEnum {A, B} public int foo(MyEnum value) { switch(value) { case(A): return calculateSomething(); case(B): return calculateSomethingElse(); } throw new IllegalArgumentException("Do not know how to handle " + value); } 我想要testing覆盖所有的行,但是由于代码需要处理所有的可能性,所以我不能在交换机中没有相应的case语句的情况下提供一个值。 扩展枚举以添加额外的值是不可能的,只是嘲笑equals方法返回false将不起作用,或者是因为生成的字节码使用幕后的跳转表来转到正确的情况下…所以,我已经认为PowerMock或许可以实现一些黑魔法。 谢谢! 编辑 : 由于我拥有枚举,我以为我可以添加一个方法的值,从而完全避免切换问题; 但是我仍然留下这个问题,因为它仍然很有趣。
我现在使用下面的代码来断言一个boolean值,但是org.hamcrest.Matchers.is()方法已经被弃用了。 assertThat(someValue, is(false)); 有没有一个简单的替代语法来testing布尔值,而不是诉诸assertTrue() ,它给你糟糕的失败消息,如“java.lang.AssertionError” 收到评论/回答后编辑 我最初的担心是因为Eclipse显示了以下的导入语句而被弃用 在查看Hamcrest API文档时,有3个重载的is()方法变体,其中只有一个被弃用。 因此,要澄清来自@mark的评论和来自@matt的回答,我上面发布的is()的使用是有效的,并且不推荐使用。
我想了解如何从一个导入的模块中@patch一个函数。 这是我到目前为止。 应用程序/ mocking.py: from app.my_module import get_user_name def test_method(): return get_user_name() if __name__ == "__main__": print "Starting Program…" test_method() 应用程序/ my_module / __ init__.py: def get_user_name(): return "Unmocked User" testing/ mock-test.py: import unittest from app.mocking import test_method def mock_get_user(): return "Mocked This Silly" @patch('app.my_module.get_user_name') class MockingTestTestCase(unittest.TestCase): def test_mock_stubs(self, mock_method): mock_method.return_value = 'Mocked This Silly') […]
阅读这个问题帮助我巩固了unit testing中一直存在的一些问题,TDD等。 从TDD发展的方法来看,我知道这是正确的道路。 阅读各种教程帮助我理解如何开始,但是他们一直是非常简单化的 – 不是真的可以应用于活跃的项目。 我所pipe理的最好的方法是围绕我的代码的一小部分编写testing,比如图书馆,主应用程序使用这些东西,但没有以任何方式进行集成。 虽然这是有用的,它相当于大约5%的代码库。 关于如何进入下一步,还有很less的东西,以帮助我在主应用程序中进行一些testing。 诸如“ 没有unit testing的大多数代码都是用很强的依赖性(即新的遍布在这个地方)或者静态方法来构build的 ”和“ ……类之间具有高级耦合并不难得,难以configuration在你的class级内的对象等等。 “让我意识到下一步是理解如何分离代码以使其可testing。 我应该看什么来帮助我做到这一点? 是否有一套特定的devise模式,我需要了解并开始实施,这将使testing更容易?