标签: testing

.NET单元测试包?

在几年没有全天候使用它之后再回到.NET,并想知道现在好的单元测试包是什么.

我对NUnit很熟悉(几年前),并且曾经与IronRuby进行过简短的比赛,其目标是获得像rspec这样的东西,但除此之外我不知道.

我知道我可以谷歌这个并称之为一天,但我相信我可能会在这里问一个问题得到一个更好,更明智的回应:-)

建议?

.net c# testing unit-testing

62
推荐指数
6
解决办法
9543
查看次数

如何在Perl中进行单元测试?

我一直在做一些OO Perl编程,我想知道:哪个是执行单元测试的最佳方法?

到目前为止,我一直在使用Test :: Simple模块来执行测试,但感觉不足以满足我的需求.

你能指点我一些很好的模块吗?

testing perl unit-testing

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

python中函数的准确计时

我正在使用Windows上的python进行编程,并希望准确地测量函数运行所需的时间.我编写了一个函数"time_it",它接受另一个函数,运行它,并返回运行所花费的时间.

def time_it(f, *args):
    start = time.clock()
    f(*args)
    return (time.clock() - start)*1000
Run Code Online (Sandbox Code Playgroud)

我称之为1000次,并对结果取平均值.(最后的1000常量是以毫秒为单位给出答案.)

这个功能似乎有效,但我有这种唠叨的感觉,我做错了,通过这样做,我使用的时间超过了它运行时实际使用的功能.

是否有更标准或可接受的方式来做到这一点?

当我更改我的测试函数以调用打印以使其花费更长时间时,我的time_it函数返回平均2.5 ms,而cProfile.run('f()')返回并平均为7.0 ms.我认为我的功能会高估时间,如果有的话,这里发生了什么?

还有一点需要注意,它是我所关心的功能相对时间,而不是绝对时间,因为这显然会因硬件和其他因素而异.

python testing time profiling

62
推荐指数
7
解决办法
8万
查看次数

如何测试或模拟"if __name__ =='__ main__'"内容

假设我有一个包含以下内容的模块:

def main():
    pass

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

我想为下半部分编写单元测试(我希望实现100%的覆盖率).我发现了runpy内置模块执行导入/ __name__设置机制,但我无法弄清楚如何模拟或以其他方式检查main()函数是否被调用.

这是我到目前为止所尝试的:

import runpy
import mock

@mock.patch('foobar.main')
def test_main(self, main):
    runpy.run_module('foobar', run_name='__main__')
    main.assert_called_once_with()
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing mocking python-import

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

量角器中的browser.ignoreSynchronization是什么?

我已经看过很多次人们建议使用它:

browser.ignoreSynchronization=true;  // or false
Run Code Online (Sandbox Code Playgroud)

但我不明白我们为什么需要它?

javascript testing end-to-end angularjs protractor

62
推荐指数
2
解决办法
5万
查看次数

如何快速编写和运行小型C#代码

有时我想从论坛测试新代码,或者我需要帮助我的朋友解决特定的C#问题.问题是我不想每次只在Visual Studio中编写/运行这个小代码时在Visual Studio中创建新的"项目".

Java和Eclipse IDE提供了"Scrapbook"功能,允许执行任意Java表达式.C#程序员有哪些选择?

c# testing visual-studio

61
推荐指数
6
解决办法
3万
查看次数

何时从头开始重写代码库

我想回到Joel Spolsky关于永远不会从头开始重写代码的文章.总结一下他的论点:代码不会生锈,虽然在许多维护版本发布之后可能看起来不太好,但如果它有效,它就可以了.最终用户并不关心代码的漂亮程度.

你可以在这里阅读文章:你不应该做的事情

我最近接管了一个项目,在查看了他们的代码之后,它非常糟糕.我立刻想到了我之前构建的原型,并明确声明它不应该用于任何生产环境.但当然,人们不听.

代码是作为一个网站构建的,没有任何关注点,没有单元测试和代码重复.没有数据层,没有真正的业务逻辑,除非你在App_Code中计算一堆类.

我已向利益相关方提出建议,虽然我们应该保留现有代码,并进行错误修复发布和一些小功能发布,但我们应该立即开始重新编写测试驱动开发并明确分离关注点.我正在考虑使用ASP.NET MVC路由.

我唯一关心的是从头开始重写可能需要的时间.这并不是完全复杂的,有会员资格的磨坊网络应用程序.

你们有没有遇到类似的问题?你采取了什么特别的步骤?

更新:

那么......我最终决定做什么?我采用了马特的方法并决定重构许多领域.

  • 由于App_Code变得相当大,从而减慢了构建时间,因此我删除了许多类并将它们转换为类库.
  • 我创建了一个非常简单的数据访问层,它包含所有ADO调用,并创建了一个SqlHelper对象来执行这些调用.

  • 我实现了一个
    更简洁的清洁日志解决方案.

虽然我不再参与这个项目[资金,政治,等等],但我认为它让我对一些项目的编写能力有了很大的了解,并且开发人员可以采取措施使事情变得更加清晰,可读和公正随着时间的推移逐渐变小,逐渐变平.

architecture testing tdd

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

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

我怎么知道何时在Rails中"刷新"我的模型对象?

这是我正在进行的集成测试的一部分:

user = User.first
assert !user.is_active?

get confirm_email_user_url(user),:confirmId => user.mail_confirmation_hash

assert_equal response.status,200
# because confirm_email_user_url modifies the activation state of the object
user = User.first
assert_equal user.state,"activated"
Run Code Online (Sandbox Code Playgroud)

我花了最后一小时调试这个:).在我的初始版本中,我在user访问confirm_email_user_url后没有重新初始化,并且inactive即使用户被激活,状态也始终如此.

我怎么知道我是否应该"重新加载"(缺少一个更好的名字)我的模型对象?我应该怎么做才能这样做?

ruby testing activerecord ruby-on-rails

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

使用Selenium WebDriver和Java切换选项卡

使用Selenium WebDriver和JAVA.我试图自动化一个功能,我必须打开一个新的选项卡在那里做一些操作,然后回到上一个选项卡(父).我使用了开关手柄,但它不起作用.还有一个奇怪的事情是两个标签有相同的窗口句柄,因此我无法在标签之间切换.

但是,当我尝试使用不同的Firefox窗口时,它可以工作,但是对于标签,它不起作用.

请帮我,如何切换标签.或者如何在不使用窗口句柄的情况下切换标签,因为在我的情况下,窗口句柄与两个标签相同.

(我观察到当你在同一个窗口中打开不同的标签时,窗口句柄保持不变)

java testing selenium automation selenium-webdriver

61
推荐指数
5
解决办法
23万
查看次数