Questions tagged «unit-testing»

单元测试是一种测试源代码的各个单元以确定它们是否适合使用的方法。

3
__init__ for unittest.TestCase
我想在unittest.TestCase类初始化后添加一些内容,但是我不知道该怎么做。 现在我正在这样做: #filename test.py class TestingClass(unittest.TestCase): def __init__(self): self.gen_stubs() def gen_stubs(self): # Create a couple of tempfiles/dirs etc etc. self.tempdir = tempfile.mkdtemp() # more stuff here 我希望针对整个测试集只生成一次所有存根。我无法使用,setUpClass()因为我正在使用Python 2.4(我也无法在python 2.7上使用该功能)。 我在这里做错了什么? 我收到此错误: `TypeError: __init__() takes 1 argument (2 given)` __init__当我使用命令运行所有存根代码时,...以及其他错误python -m unittest -v test。


19
如何从Visual Studio以调试模式运行NUnit?
我最近一直在为我一直在努力的C#构建测试框架。我已经在工作区中设置了NUnit并创建了一个新项目来测试组件。如果我从Nunit(v2.4)加载单元测试,一切都很好,但是我已经意识到在调试模式下运行并设置一些断点确实很有用。 我尝试了一些指南中的建议,这些指南都建议更改测试项目的“ Debug”属性: Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll 我在那里使用的是控制台版本,但也尝试过调用GUI。尝试开始调试时,两者都给我相同的错误: Cannot start test project 'TestDSP' because the project does not contain any tests. 这是因为我通常将\ DSP.nunit加载到Nunit GUI中,并且是进行测试的地方吗? 我开始认为问题可能是VS想要运行它自己的测试框架,这就是为什么它找不到NUnit测试的原因? 编辑:对于那些询问测试装置的人,我在TestDSP项目中的.cs文件之一大致如下: namespace Some.TestNamespace { // Testing framework includes using NUnit.Framework; [TestFixture] public class FirFilterTest { [Test] public void …

3
我该如何在签名中具有可选参数而不显式指定它或使用重载的方法?
给定以下界面: public interface IFoo { bool Foo(string a, bool b = false); } 尝试使用Moq模拟它: var mock = new Mock<IFoo>(); mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false); 在编译时给出以下错误: 表达式树可能不包含使用可选参数的调用或调用 我发现上述问题是Moq问题列表中的增强功能,并且似乎已分配给4.5版本(无论何时)。 我的问题是:鉴于上述情况不会很快得到解决,该怎么办?我的选择是只在每次模拟它时都显式设置可选参数的默认值(这种设置会破坏首先指定一个参数的目的)或创建没有布尔值的重载(就像我会做的那样)在C#4之前)? 还是有人遇到了更聪明的方法来克服这个问题?
119 c#  unit-testing  moq 

14
使用Cocoapods的Xcode单元测试
最近几天,我一直在用这种方法撞墙,但是尽管进行了多次Google / SO / Github搜索,但我找不到解决所遇到问题的方法! 我要做的就是为我的应用程序创建一些单元测试,以利用Firebase Pod。 我正在使用Xcode 7.3.1和Cocoapods 1.0.1。更新: Xcode 8.0仍然存在问题 使用此Podfile: platform :ios, '9.0' use_frameworks! inhibit_all_warnings! target 'MyApp' do pod 'Firebase' pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' target 'MyAppTests' do inherit! :search_paths end end 在我的XCTest类中,我得到了 缺少必需的模块“ Firebase” 错误于 @testable import MyApp 或者使用此Podfile: platform :ios, '9.0' use_frameworks! inhibit_all_warnings! def …

30
他们为什么不在学校教这些东西?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在整个夏天,我很幸运地参加了Google Summer of Code。我学到了很多东西(可能比我所有大学课程学习的总和还多)。我真的很想知道为什么他们不教一些我在学校早些时候学到的东西。仅举几例: 单元测试 版本控制 敏捷开发 在我看来,他们花了大量时间在教学其他方面,例如数据结构和算法。尽管我仍然认为这些对于早期学习非常重要,但为什么不在他们之前教更多这三个呢?还是仅仅是我的学校不教这些东西太多? 别误会我的意思,我认为大学总是不应该教那些最流行的编程风尚,但我的教授难道不应该教我“在开始编码之前先画一个图”吗?

4
用于多个测试的Unittest setUp / tearDown
在测试场景的开头/结尾是否触发了某个功能?在每次测试之前/之后都会触发setUp和tearDown函数。 我通常希望拥有: class TestSequenceFunctions(unittest.TestCase): def setUpScenario(self): start() #launched at the beginning, once def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) def tearDownScenario(self): end() #launched at the end, once 目前,这些setUp和tearDown是单元测试,并且分散在我所有的场景中(包含许多测试),一个是第一个测试,另一个是最后一个测试。

3
是否将JUnit类分成特殊的测试包?
我通过阅读学习测试驱动开发的概念工匠的文章(点击工匠下按主题)在回答中建议我刚才的问题,“学习JUnit和适当的软件工程样品工程”。到目前为止,我喜欢它! 但是现在我想坐下来自己尝试一下。我有一个问题,希望只需要一个简单的答案。 您如何组织JUnit测试类和实际代码?我主要是在谈论包的结构,但是注释的任何其他概念也将有所帮助。 您是否将测试类放在org.myname.project.test。*中,将普通代码放在org.myname.project。*中?您是否将测试课程放在普通课程的旁边?您是否愿意在类名前面加上Test而不是给它们加上后缀? 我知道这似乎是我不应该担心的事情,但是我是一个非常以组织为中心的人。我几乎是那种花费更多时间找出方法来跟踪要完成的事情,而不是实际完成工作的人。 我有一个项目,目前已将其整齐地分为多个软件包,但该项目变得一团糟。我不想尝试重构所有内容并编写测试,而是想重新开始,首先进行所有测试。但是首先我需要知道我的测试要去哪里。 编辑:我完全忘记了Maven,但似乎大多数人都在使用它!过去我有一个特定的用例,其中Maven完全崩溃了,但Ant给了我所需的灵活性,所以我最终还是依附于Ant,但是我想也许我只是在采用错误的方法。我想我会再尝试一下Maven,因为听起来好像可以很好地进行测试驱动的开发。
118 java  unit-testing  junit 

1
模拟函数引发异常以测试except块
我有一个foo调用另一个函数(bar)的函数()。如果调用bar()引发一个HttpError,如果状态代码为404,我想特别处理它,否则重新引发。 我正在尝试围绕此foo函数编写一些单元测试,以模拟对的调用bar()。不幸的是,我无法得到模拟调用bar()以引发被我的代码except块捕获的异常。 这是说明我问题的代码: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # fails, test raises HttpError @mock.patch('my_tests.bar') def test_foo_shouldRaiseHttpError_whenBarRaiseHttpErrorNot404(self, barMock): barMock.side_effect …

17
TDD与单元测试[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我的公司对单元测试我们的代码还很陌生。我已经阅读了一段时间的TDD和单元测试,并深信它们的价值。我试图说服我们的团队,TDD值得学习和改变关于编程方式的思维方式,但这是一个挣扎。这使我想到了我的问题。 TDD社区中有很多人对编写测试然后编写代码非常虔诚(我和他们在一起),但是对于一个在TDD中苦苦挣扎的团队来说,妥协仍然带来更多的好处吗? 一旦编写了代码(也许是检入代码的要求),我也许可以成功地使团队编写单元测试,并且我的假设是编写这些单元测试仍然有价值。 使陷入困境的团队加入TDD的最佳方法是什么?失败的是,即使在编写代码之后,仍然值得编写单元测试吗? 编辑 我摆脱的是,对于我们而言,在编码过程中的某个位置开始单元测试非常重要。对于团队中支持此概念的人员,应开始朝着TDD进行更多测试并首先进行测试。感谢大家的投入。 跟进 我们最近开始了一个新的小型项目,并且团队的一小部分使用了TDD,其余的在代码之后编写了单元测试。在结束了项目的编码部分之后,那些编写了代码之后的单元测试的人惊讶地发现TDD编码器已经完成并且具有更可靠的代码。这是赢得怀疑者的好方法。我们仍然有很多成长的烦恼,但是意志之战似乎已经结束。感谢所有提供建议的人!


6
什么是“存根”?
因此,继续执行我的新决议,以更多地参与TDD,我现在开始与Rhino Mocks合作。 我热衷于做的一件事是确保我确实了解自己将要从事的工作,因此我想检查一下我对到目前为止所见内容的理解(我认为将其作为一个完整的内容会很好。资源)。 什么是“存根”?

2
模拟类:Mock()或patch()?
我在Python中使用模拟,并想知道这两种方法中哪一种更好(请参阅:更多pythonic)。 方法一:只需创建一个模拟对象并使用它即可。代码如下: def test_one (self): mock = Mock() mock.method.return_value = True self.sut.something(mock) # This should called mock.method and checks the result. self.assertTrue(mock.method.called) 方法二:使用补丁创建一个模拟。代码如下: @patch("MyClass") def test_two (self, mock): instance = mock.return_value instance.method.return_value = True self.sut.something(instance) # This should called mock.method and checks the result. self.assertTrue(instance.method.called) 两种方法都做同样的事情。我不确定这些差异。 谁能启发我?

14
在python中从单元测试输出数据
如果我使用python(使用unittest模块)编写单元测试,是否可以从失败的测试中输出数据,所以我可以对其进行检查以帮助推断出导致错误的原因?我知道创建自定义消息的能力,该消息可以包含一些信息,但是有时您可能会处理更复杂的数据,这些数据无法轻松地表示为字符串。 例如,假设您有一个Foo类,并且正在使用名为testdata的列表中的数据测试方法栏: class TestBar(unittest.TestCase): def runTest(self): for t1, t2 in testdata: f = Foo(t1) self.assertEqual(f.bar(t2), 2) 如果测试失败,则可能要输出t1,t2和/或f,以查看为什么此特定数据导致失败。通过输出,我的意思是说,在运行测试之后,可以像访问任何其他变量一样访问这些变量。

5
使用Spring MVC Test对多部分POST请求进行单元测试
我有以下用于保存汽车的请求处理程序。我已经验证了使用cURL时的效果。现在,我想使用Spring MVC Test对方法进行单元测试。我试图使用fileUploader,但是我无法使其正常运行。我也无法添加JSON部分。 如何使用Spring MVC Test对该方法进行单元测试?我无法在此找到任何示例。 @RequestMapping(value = "autos", method = RequestMethod.POST) public ResponseEntity saveAuto( @RequestPart(value = "data") autoResource, @RequestParam(value = "files[]", required = false) List<MultipartFile> files) { // ... } 我想为自己的auto +一个或多个文件添加JSON表示形式。 我会在正确答案中增加100英镑的赏金!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.