什么是单元测试,集成测试,烟雾测试,回归测试以及它们之间有什么区别?我可以为每个工具使用哪些工具?
例如,我使用JUnit和NUnit进行单元测试和集成测试.有没有烟雾测试或回归测试工具?
我正在开始一个新项目,并决定尝试合并DDD模式,还包括Linq to Entities.当我查看EF的ObjectContext时,它似乎正在执行Repository和Unit of Work模式的功能:
存储库的意思是底层数据级接口是从实体表示中抽象出来的,我可以通过ObjectContext请求和保存数据.
工作单元在某种意义上说,我可以写入对objectContext的所有插入/更新,并在执行SaveChanges()时一次性执行它们.
将这些模式的另一层放在EF ObjectContext之上似乎是多余的?似乎Model类可以使用'partial class'直接合并到EF生成的实体之上.
我是DDD的新手,所以如果我在这里遗漏了什么,请告诉我.
我读了这篇文章,我发现它很有趣.
总结那些不想阅读整篇文章的人.作者实现了一个名为Curry的高阶函数(由我重构而没有他的内部类):
public static Func<T1, Func<T2, TResult>>
Curry<T1, T2, TResult>(this Func<T1, T2, TResult> fn)
{
Func<Func<T1, T2, TResult>, Func<T1, Func<T2, TResult>>> curry =
f => x => y => f(x, y);
return curry(fn);
}
Run Code Online (Sandbox Code Playgroud)
这使我们能够采用像F(x,y)这样的表达式.
Func<int, int, int> add = (x, y) => x + y;
Run Code Online (Sandbox Code Playgroud)
并以F.Curry()(x)(y)方式调用它;
这部分我理解,我觉得它很酷,以一种令人讨厌的方式.我无法解决的问题是这种方法的实际用途.何时何地需要这种技术以及可以从中获得什么?
提前致谢.
编辑:在最初的3个响应之后,我理解增益将是在某些情况下,当我们从curried创建一个新函数时,一些参数不会被重新评估.我在C#中进行了这个小测试(请记住,我只对C#实现感兴趣,而不是一般的咖喱理论):
public static void Main(string[] args)
{
Func<Int, Int, string> concat = (a, b) => a.ToString() + b.ToString();
Func<Int, Func<Int, string>> concatCurry = concat.Curry();
Func<Int, string> curryConcatWith100 = (a) …Run Code Online (Sandbox Code Playgroud) Ruby已经预装在我的Mac上了,所以我想看看它.我注意到的第一件事是,irb提示>>而不是irb(main):001:0>.我找不到任何关于如何通过Google更改此内容的信息,因为每个人都在他们的代码中使用irb(main):001:0> ;-)
你能帮我吗?
PS:这不是我认为Ruby被打破了,但我想在编程时看起来更讨厌;-)
在WPF 3.5SP1中,我使用DataBindings中的最后一个功能StringFormat:
<TextBlock Text="{Binding Path=Model.SelectedNoteBook.OriginalDate, StringFormat='f'}"
FontSize="20" TextTrimming="CharacterEllipsis" />
Run Code Online (Sandbox Code Playgroud)
我面临的问题是日期总是用英文格式化...虽然我的系统是法语的?我如何强制日期遵循系统日期?
我在翻译此查询以使用ZF时遇到一些问题Zend_Db_Select:
SELECT b.id, b.title, b.description
FROM memberships AS m
JOIN blogs AS b ON b.id = m.blog_id
WHERE m.user_id = ?
ORDER BY m.created
LIMIT 0, 30
Run Code Online (Sandbox Code Playgroud)
(此查询有效并返回结果)
Memberships是blogs和之间的链接表users.这是一件简单的| id | blog_id | user_id |事情.
这是我到目前为止所拥有的:
// $table = Zend_Db_Table instance, $id = a user id
$select = $table->select()
->from(array('m' => 'memberships'), array('b.id', 'b.title', 'b.description'))
->join(array('b' => 'blogs'), 'b.id = m.blog_id')
->where('m.user_id = ?', (int) $id)
->order('m.created DESC')
->limit(0, 30);
Run Code Online (Sandbox Code Playgroud)
这是我得到的(奇怪的(对我而言)错误: …
我来自Java背景,并且最近已经为一个项目切换到了php.我在php中发现了一个意外的行为.
设置为某个静态变量的值 不会在 请求中保持持久性.
我不确定这是否是预期的行为.因为在java中,您始终可以持久保存非常常用的变量,或者在请求中说出dbname,hostname,username,password等常量,这样您就不必总是从本地属性文件中读取它们.
这种行为是否正常?如果它是正常的那么有没有其他方法可以保持分配给请求中的变量的值?
有人可以建议我在PHP中更好的方法吗?
我在运行时使用Reflection进行一些类型分析.如果我有一个MethodInfo实例,我怎么能弄清楚这是一个"真正的"方法还是一个属性的getter/setter方法?如果它是一个属性,我怎样才能找到它的托管PropertyInfo?
我有一些直线排列的插槽和钉子.栓可以移动,需要每个都移动到一个槽.只有在采取所有钉子时,才能将槽留空.移动挂钉时,不允许穿过另一个挂钉.换句话说,必须保持钉的顺序.优选地,所有钉子移动的总距离应保持最小.应尽可能将挂钉置于最近的可用插槽中.
我想知道的是:什么样的数学领域处理这样的问题?处理类似问题的任何众所周知的算法的名称是什么?我正在寻找Google饲料.一些关键字.
+--oooo-+--+---+---o--+------+--+-ooo+o-+-------o--+-----o-o-+-o
+ - Slots
o - Pegs
Run Code Online (Sandbox Code Playgroud)
编辑:我认为这种可视化更有意义.它们是两个需要排列的独立轨道.
Slots: +-------+--+---+------+------+--+----+--+----------+---------+--
Pegs: ---oooo------------o--------------ooo-o---------o--------o-o---o
Run Code Online (Sandbox Code Playgroud)
编辑:只是想明确说明插槽的数量可以大于,小于或等于挂钩的数量.
您是否知道我可以通过编程方式或通过scrirpt将一组以ansi字符编码保存的文本文件转换为unicode编码?
当我用记事本打开文件并选择将其保存为unicode文件时,我想做同样的事情.
.net ×2
algorithm ×1
c# ×1
cygwin ×1
datetime ×1
definition ×1
irb ×1
lambda ×1
localization ×1
math ×1
methodinfo ×1
persistence ×1
php ×1
powershell ×1
propertyinfo ×1
reflection ×1
ruby ×1
static ×1
testing ×1
unicode ×1
unit-testing ×1
wpf ×1