Tag: tdd

Pythonunit testing:以编程方式生成多个testing?

可能重复: 如何在python中生成dynamic(参数化)的unit testing? 我有一个函数来testing, under_test ,和一套预期的input/输出对: [ (2, 332), (234, 99213), (9, 3), # … ] 我希望这些input/输出对中的每一个都在自己的test_*方法中进行testing。 那可能吗? 这是我想要的东西,但强迫每一个input/输出对进行一个单一的testing: 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() (另外,我真的想在setUp中joinself.expected_pairs定义吗?) 更新:尝试doublep的build议: class TestPreReqs(unittest.TestCase): def setUp(self): expected_pairs = [ (2, 3), (42, 11), […]

当程序员说:“对接口而不是对象进行编码”时,程序员意味着什么?

我已经开始了漫长而艰苦的学习,并将TDD应用于我的工作stream程。 我觉得TDD非常符合IoC原则。 在这里浏览一些TDD标记的问题之后,我发现用接口进行编程是一个好主意,而不是对象。 你能提供简单的代码例子吗?以及如何将它应用于实际的使用情况? 简单的例子对于我(和其他想学习的人)掌握这些概念至关重要。 非常感谢。

通过对接口进行编程来保持数据

我有一个IBankAccount接口,我将传递给ApplicationService。 帐户对象(在ApplicationService项目中)所做的更改需要保存在数据库中。 存储库使用IBankAccount接口接收更改。 我怎样才能把这个数据存入数据库? 这是使用LINQ to SQL实现的。 注意:以下是来自Scott的意见http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx “添加接口到LINQ to SQL数据模型类,LINQ to SQL类是部分类 – 这意味着你可以直接添加接口到它们。 public class LijosSimpleBankRepository : ILijosBankRepository { public System.Data.Linq.DataContext Context { get; set; } public virtual void UpdateAccount(DomainInterfaces.IBankAccount iBankAcc) { DBML_Project.BankAccount bankAccount; } } namespace DomainInterfaces { public interface IBankAccount { int BankAccountID { get; set; } string AccountType { get; […]

私人/受保护方法是否应该进行unit testing?

在TDD开发中,你通常做的第一件事是创build你的接口,然后开始编写你的unit testing对接口。 当你通过TDD过程时,你最终会创build一个实现接口的类,然后在某个时候你的unit testing会通过。 现在我的问题是关于私有和受保护的方法,我可能必须在我的类中写入以支持接口公开的方法/属性: class上的私人教学方法应该有自己的unit testing吗? class上的保护方法是否应该有自己的unit testing? 我的想法: 特别是因为我正在编写接口,所以我不应该担心保护/私有方法,因为它们是黑盒子。 因为我正在使用接口,所以我正在编写unit testing来validation所定义的合同是否由实现接口的不同类正确实现,所以我不必担心私有/受保护的方法,应该通过调用方法/属性由接口定义。 如果我的代码覆盖不显示受保护/私有方法正在被打,那么我没有正确的unit testing,或者我没有使用的代码,应该被删除。

什么时候使用RSpec let()?

我倾向于在块之前使用设置实例variables。 然后我在这些例子中使用这些variables。 我最近遇到let() 。 根据RSpec文档,它已经习惯了 …定义一个记忆辅助方法。 该值将在同一个示例中跨多个调用进行caching,但不会跨越示例。 这与在前面块中使用实例variables有什么不同? 还应该什么时候使用let() vs before() ?

如何unit testing保存文件到磁盘?

我知道,强烈build议在与文件系统分离的情况下运行unit testing,因为如果在testing中触摸文件系统,还要testing文件系统本身。 好的,这是合理的。 我的问题是,如果我想testing文件保存到磁盘,我该怎么办? 与数据库一样,我分离负责数据库访问的接口,然后为我的testing创build另一个实现? 或者可能还有其他方法?

使用rspec-railstestingfile upload

我想testing一个file upload在rails中,但不知道如何做到这一点。 这里是控制器代码: def uploadLicense #Create the license object @license = License.create(params[:license]) #Get Session ID sessid = session[:session_id] puts "\n\nSession_id:\n#{sessid}\n" #Generate a random string chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a newpass = "" 1.upto(5) { |i| newpass << chars[rand(chars.size-1)] } #Get the original file name upload=params[:upload] name = upload['datafile'].original_filename @license.format = File.extname(name) #calculate license […]

什么是一个好的unit testing?

我相信你们中的大多数人正在写大量的自动化testing,并且在unit testing时也遇到了一些常见的陷阱。 我的问题是,你是否遵循任何行为准则来编写testing,以避免将来出现问题? 更具体地说: 好的unit testing的特性是什么,或者如何编写testing? 鼓励语言不可知论的build议。

假的DbContext的entity framework4.1来testing

我正在使用这个教程来伪造我的DbContext并testing: http ://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic -repository / 但是我必须改变FakeMainModuleContext实现在我的控制器中使用: public class FakeQuestiona2011Context : IQuestiona2011Context { private IDbSet<Credencial> _credencial; private IDbSet<Perfil> _perfil; private IDbSet<Apurador> _apurador; private IDbSet<Entrevistado> _entrevistado; private IDbSet<Setor> _setor; private IDbSet<Secretaria> _secretaria; private IDbSet<Pesquisa> _pesquisa; private IDbSet<Pergunta> _pergunta; private IDbSet<Resposta> _resposta; public IDbSet<Credencial> Credencial { get { return _credencial ?? (_credencial = new FakeDbSet<Credencial>()); } set { […]

如何testing具有私有方法,字段或内部类的类?

如何使用JUnittesting具有内部私有方法,字段或嵌套类的类? 为了能够运行一个testing,改变一个方法的访问修饰符似乎是不好的。