Questions tagged «unit-testing»

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

3
使用XUnit声明异常
我是XUnit和Moq的新手。我有一个以字符串为参数的方法,如何使用XUnit处理异常。 [Fact] public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException() { //arrange ProfileRepository profiles = new ProfileRepository(); //act var result = profiles.GetSettingsForUserID(""); //assert //The below statement is not working as expected. Assert.Throws<ArgumentException>(() => profiles.GetSettingsForUserID("")); } 被测方法 public IEnumerable<Setting> GetSettingsForUserID(string userid) { if (string.IsNullOrWhiteSpace(userid)) throw new ArgumentException("User Id Cannot be null"); var s = profiles.Where(e => …
111 c#  unit-testing  xunit 

23
在没有equals方法的情况下,如何在两个类上声明相等性?
说我有一个没有equals()方法的类,该类没有源。我想在该类的两个实例上声明相等性。 我可以做多个断言: assertEquals(obj1.getFieldA(), obj2.getFieldA()); assertEquals(obj1.getFieldB(), obj2.getFieldB()); assertEquals(obj1.getFieldC(), obj2.getFieldC()); ... 我不喜欢这种解决方案,因为如果早期断言失败,我将无法获得完整的平等情况。 我可以自己手动比较并跟踪结果: String errorStr = ""; if(!obj1.getFieldA().equals(obj2.getFieldA())) { errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n"; } if(!obj1.getFieldB().equals(obj2.getFieldB())) { errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + "\n"; } ... …
111 java  unit-testing  junit 

7
取消模拟模块时如何在Jest中模拟导入的命名函数
我有以下模块要在Jest中进行测试: // myModule.js export function otherFn() { console.log('do something'); } export function testFn() { otherFn(); // do other things } 如上所示,它导出了一些命名函数并重要地testFn使用otherFn。 在Jest中,当我为其编写单元测试时testFn,我想模拟该otherFn函数,因为我不希望输入错误otherFn影响我的单元测试testFn。我的问题是我不确定做到这一点的最佳方法: // myModule.test.js jest.unmock('myModule'); import { testFn, otherFn } from 'myModule'; describe('test category', () => { it('tests something about testFn', () => { // I want to mock "otherFn" …

7
在Django 1.7中运行单元测试时禁用迁移
Django 1.7引入了数据库迁移。 在Django 1.7中运行单元测试时,它会强制进行迁移,这需要很长时间。因此,我想跳过django迁移,并以最终状态创建数据库。 我知道忽略迁移可能是一个坏习惯,因为该部分代码将不会进行测试。事实并非如此:我正在CI测试服务器(jenkins)中运行完整迁移。我只想在速度很重要的本地测试中跳过迁移。 一些背景: 直到Django 1.6为止,在使用South时,我使用SOUTH_TESTS_MIGRATE设置: 默认情况下,South的syncdb命令如果以非交互模式运行(包括运行测试的时间),也会应用迁移-它将在每次运行测试时运行每次迁移。 如果您希望测试运行程序使用syncdb而不是进行迁移(例如,如果迁移时间太长而无法应用),则只需在settings.py中设置SOUTH_TESTS_MIGRATE = False。 但是,syncdb不再存在,现在可以进行迁移。 从Django 1.8开始,我将使用--keepdb参数: --keepdb选项可用于在两次测试运行之间保留测试数据库。这具有跳过创建和销毁操作的优势,这大大减少了运行测试的时间,尤其是大型测试套件中的测试。如果测试数据库不存在,它将在第一次运行时创建,然后为以后的每次运行保留。在运行测试套件之前,所有未应用的迁移也将应用于测试数据库。 因此,此问题仅限于Django 1.7。

21
在单元测试中模拟HttpClient
我在尝试包装要在单元测试中使用的代码时遇到一些问题。问题是这样的。我有接口IHttpHandler: public interface IHttpHandler { HttpClient client { get; } } 和使用它的类,HttpHandler: public class HttpHandler : IHttpHandler { public HttpClient client { get { return new HttpClient(); } } } 然后是Connection类,该类使用simpleIOC注入客户端实现: public class Connection { private IHttpHandler _httpClient; public Connection(IHttpHandler httpClient) { _httpClient = httpClient; } } 然后我有一个具有此类的单元测试项目: private IHttpHandler …
110 c#  unit-testing  moq 

12
如何在Android Studio中创建测试?
刚刚下载了基于Intellij Idea的Android Studio。 一个人将如何创建测试? 我注意到有一个用于创建测试模块的选项,但这似乎没有任何作用,仅使用src创建一个新项目 我还尝试按热键CTRL + AlT + T,该键可以在现有类上创建单元测试,但似乎想将其放置在当前项目中。当然这对TDD没有帮助 有人在这里有经验吗?

4
测试SQL查询的最佳方法
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 我遇到了一个问题,就是我们不断使复杂的SQL查询出错。从本质上讲,这导致将邮件发送给错误的客户以及类似的其他“问题”。 每个人创建这样的SQL查询的经验是什么?我们每隔一周就会创建一组新的数据。 所以这是我的一些想法及其局限性: 创建测试数据尽管这将证明我们拥有所有正确的数据,但不会强制排除生产中的异常情况。这些数据今天被认为是错误的,但可能在10年前是正确的。它没有记录,因此我们仅在提取数据后才知道。 创建维恩图和数据映射这似乎是测试查询设计的可靠方法,但是不能保证实现的正确性。它使开发人员提前计划并在编写时考虑发生了什么。 感谢您的输入,可以解决我的问题。
109 sql  unit-testing 

24
如何使初级程序员编写测试?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我们有一个初级程序员,根本没有编写足够的测试。 我必须每两个小时na一下他,“你写考试了吗? 我们尝试过: 表明设计变得更简单 显示它可以防止缺陷 说只有不好的程序员不做才是我的事 本周末,两名团队成员不得不上班,因为他的代码具有NULL引用,并且他没有对其进行测试 我的工作需要质量稳定的高质量代码,通常每个人都“了解”它,而无需进行测试。我们知道我们可以让他编写测试,但我们都知道有用的测试是您参与其中时编写的测试。 您知道更多动机吗?

7
F#开发和单元测试?
我刚开始使用F#,这是我的第一门功能语言。我一直在与C#进行半排他性的合作,并且非常喜欢F#如何使我重新思考如何编写代码。我发现一个令人迷惑的方面是编写代码过程中的变化。我已经在C#中使用TDD多年了,非常感谢进行单元测试以了解我的位置。 到目前为止,我使用F#的过程是编写一些函数,并在交互式控制台中使用它们,直到我“合理”地确定它们可以工作,然后进行调整和组合。这对于诸如Euler Project之类的小规模问题非常有效,但我无法想象以这种方式构建大型项目。 人们如何进行单元测试并为F#程序构建测试套件?是否有与TDD相当的产品?任何指针或想法表示赞赏。


6
在xUnit.net中测试与NUnit类似的参数化
xUnit.net框架中是否有类似于NUnit的以下功能的方法? [Test, TestCaseSource("CurrencySamples")] public void Format_Currency(decimal value, string expected){} static object[][] CurrencySamples = new object[][] { new object[]{ 0m, "0,00"}, new object[]{ 0.0004m, "0,00"}, new object[]{ 5m, "5,00"}, new object[]{ 5.1m, "5,10"}, new object[]{ 5.12m, "5,12"}, new object[]{ 5.1234m, "5,12"}, new object[]{ 5.1250m, "5,13"}, // round new object[]{ 5.1299m, "5,13"}, …

5
如何以编程方式关闭ExpressJS实例进行测试?
我试图弄清楚如何关闭Express实例。基本上,我想跟.listen(port)电话相反-如何让Express服务器停止监听,释放端口并干净地关机? 我知道这似乎是一个奇怪的查询,所以这里是上下文;也许还有另一种方法可以解决这个问题,而我正在考虑错误的方法。我正在尝试为我的socket.io/nodejs应用设置测试框架。这是一个单页应用程序,因此在我的测试脚本中(我正在使用Mocha,但这并不重要)我希望能够启动服务器,针对它运行测试,然后关闭服务器。我可以通过假设在测试开始之前打开服务器电源,或者通过其中一个测试启动服务器,然后让每个后续测试都假设它已启动来解决此问题,但这确实很麻烦。我更希望每个测试文件使用适当的设置启动服务器实例,然后在测试结束后关闭该实例。这意味着运行测试没有任何怪异的依赖关系,并且一切都很干净。这也意味着我可以进行启动/关闭测试。 那么,有关如何执行此操作的任何建议?我曾考虑过手动触发异常以降低异常,但这似乎很混乱。我已经研究过Express文档和源代码,但似乎找不到任何可以关闭服务器的方法。为此,socket.io中可能还包含一些内容,但是由于套接字服务器只是连接到Express服务器,因此我认为这需要在Express层进行。

12
您如何使用NUnit测试私有方法?
我想知道如何正确使用NUnit。首先,我创建了一个单独的测试项目,该项目使用我的主项目作为参考。但是在那种情况下,我无法测试私有方法。我的猜测是我需要在主代码中包含测试代码吗?-这似乎不是正确的方法。(我不喜欢带有测试代码的代码。) 您如何使用NUnit测试私有方法?

8
仅在内存中运行PostgreSQL
对于我编写的每个单元测试,我都希望运行一个仅在内存中运行的小型PostgreSQL数据库。例如: @Before void setUp() { String port = runPostgresOnRandomPort(); connectTo("postgres://localhost:"+port+"/in_memory_db"); // ... } 理想情况下,我将把一个postgres可执行文件签入版本控制中,以供单元测试使用。 类似于HSQL,但适用于postgres。我怎样才能做到这一点? 我可以得到这样的Postgres版本吗?如何指示它不使用磁盘?

30
如果单元测试是如此出色,为什么没有更多的公司这样做呢?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我工作过的第一家真正的软件公司就是单元测试(NUnit)。我不知道那时我们是真正的坚持者-我不知道我们的代码覆盖率是什么样,我正在编写大多数单元测试。从那时起,我遇到了一些公司进行大量测试的公司,但它是椅子测试:依赖于那里的人,可重复性低,发现错误的机会也很小。另一种态度是:这是他们希望“将来”发展的东西;基本上是从天上掉下来的钱。 我想念单元测试-它只会使生活更轻松。但是我发现,当我寻找一份新工作时,单元测试要么是公司将来希望“跟上去”的事情,要么就是根本不做的事情(嗯,它已经存在了一段时间了)现在!)。我想说,过去两年来我查看的60-75%的工作要求根本没有列出单元测试。我只能想到有一个或两个具有单元测试经验的要求(对于中级开发人员职位)。 所以问题是,缺少了什么?我认为这可以使人们提高生产力,但这只是在花费大量时间实际进行之后。关于单元测试的成本节省,没有好的研究吗?这是我正在寻找的公司类型吗? 编辑:尽管标题有点像恶魔拥护者,但我认为自己是单元测试的支持者。
103 unit-testing 

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.