问题列表 - 第43060页

可重复使用的模拟与每次测试中的模拟

我们的团队正在进入TDD并努力进行单元测试的最佳实践.我们的测试代码使用依赖注入.我们的测试通常遵循Arrange-Act-Assert类型的布局,其中我们使用Moq在Arrange部分中模拟依赖关系.

从理论上讲,单元测试应该是一个屏蔽,可以在您重构时保护您.但它正在变成一个阻止我们这样做的锚.我正在努力确定我们的流程失败的地方.

考虑简化的例子:

  • XRepository.Save更改了签名和行为/合同.
  • XController.Save使用XRepository.Save,因此它被重构为使用新接口.但在外部,它的公共合同没有改变.

我预计控制器测试并没有需要进行重构,而是证明给我看我的新控制器实现荣誉的不变的合同.但我们在这里失败了,因为事实并非如此.

每个控制器测试都会动态地模拟存储库接口.他们都需要改变.此外,由于每个测试都不想模拟所有接口和方法,我们发现我们的测试与特定实现相关联,因为它需要知道要模拟的方法.

对于我们拥有的更多测试,重构变得越来越难以实现!或者更准确地说,我们模拟界面的次数越多.

所以我的问题:

  1. 是否有偏好在每个测试中使用动态模拟,而不是为每个界面制作可重复使用的手工模拟?

  2. 鉴于我的故事,我错过了一些原则还是陷入了常见的陷阱?

谢谢!

unit-testing moq mocking

10
推荐指数
1
解决办法
1629
查看次数

扩展Android虚拟键盘

我正在考虑一下Appstore的Textsastic,这就是,在虚拟键盘正上方需要一整行所需的键(括号,斜线等),就像是它的延伸一样.

我怎样才能在Android中完成类似的事情?虚拟键盘显示时,至少有一种方法可以拥有一个监听器吗?

java android

6
推荐指数
1
解决办法
2676
查看次数

什么更好/更快?尝试捕获或避免异常?

我想知道,在一般编程中有什么更好或更快?避免异常或等待异常?

避免例外是:

string a = null;
list = someMethod();
if(list.Length > 0 ){
   a = list[0];
}
if(a!=null) ...
Run Code Online (Sandbox Code Playgroud)

或尝试捕捉异常......

string a = null;
try{
    a = someMethod()[0];
catch{}
if(a!=null) ...
Run Code Online (Sandbox Code Playgroud)

c# exception

13
推荐指数
2
解决办法
6393
查看次数

数组元素与属性?

所以要跟进前一个问题;

由于使用属性和迭代的动态功能

for(var key in array)
Run Code Online (Sandbox Code Playgroud)

我已经相当多地使用它来支持尝试枚举数组并按数字迭代.

仅仅.pushing元素和设置为属性的专业和缺点是什么?

除了明显的识别差异之外.

javascript

1
推荐指数
1
解决办法
535
查看次数

在python中将整数列表转换为范围

python中是否存在可以将增加的整数列表转换为范围列表的内容

例如,给定{0,1,2,3,4,7,8,9,11}我想得到{{0,4},{7,9},{11,11}}.

我可以写一个程序来做这个,但想知道python中是否有内置函数

python integer list range

31
推荐指数
3
解决办法
2万
查看次数

Google问题跟踪软件?

Google代码用于跟踪GWT等项目的问题跟踪系统是什么http://code.google.com/p/google-web-toolkit/issues/list Chromium http://code.google.com/p/chromium/issues/list等?

我想知道这个bug跟踪软件是否是一个可供下载的开源项目.

bug-tracking

8
推荐指数
1
解决办法
8522
查看次数

Eclipse为什么不识别新的JAR?

我从队友那里收到了一个新的SOAP服务客户端JAR,我正忙着将它集成到我的应用程序中.我已将JAR放入适当的路径,覆盖以前的版本.我刷新了我的工作区,执行了Clean和Build,但......

...我无法通过intellisense看到JAR中的任何类,即使我从JAR使用的代码将正确编译和执行.此外,Eclipse仍在尝试使用以前版本的JAR,因为当我执行"修复导入"时,它会重新导入旧类,而不是新类.

代码构建和运行,但我必须绝对引用类,而不是相对:

 org.acmewidgets.soap.inputs.HeaderType header = new org.acmewidgets.soap.inputs.HeaderType()
Run Code Online (Sandbox Code Playgroud)

代替

 HeaderType header = new HeaderType()
Run Code Online (Sandbox Code Playgroud)

以前版本的JAR不需要这个.

我如何"强迫"Eclipse抛弃旧引用并使用新引用?或者,Eclipse运行良好,我的新JAR是否可疑?

谢谢!

java eclipse import jar

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

使用PyQt与gevent

有没有人使用PyQt与gevent?如何将PyQt循环链接到gevent?

http://www.gevent.org/ - 基于coroutine的Python网络库,它使用greenlet在libevent事件循环之上提供高级同步API.

python pyqt gevent

9
推荐指数
2
解决办法
3080
查看次数

Silverlight Dispatcher事件队列顺序

Silverlight Dispatcher事件队列的排序是否严格保留?

详细说明:如果我只有一个其他线程调用Dispatcher.BeginInvoke,是否可以保证这些调用将在UI线程上以相同的顺序处理,或者排序是否不确定?

silverlight dispatcher

5
推荐指数
1
解决办法
752
查看次数

以像素为单位的字符串长度

我正在使用arrayCollection字符串填充dropDownList.我希望下拉列表控件的宽度与数组集合中最长字符串的大小(以像素为单位)匹配.我面临的问题是:集合中字符串的字体宽度不同,例如'W'看起来比'l'宽.所以我估计一个字符的宽度为8像素,但这不是很整洁.如果遇到具有许多"W"和"M"的字符串,则估计是错误的.所以我想要精确的字符串像素宽度.如何获得字符串的确切长度(以像素为单位)?

我的解决方案是将所有字符估计为8像素宽,如下所示:

public function populateDropDownList():void{
    var array:Array = new Array("o","two","three four five six seven eight wwww");
    var sampleArrayCollection:ArrayCollection = new ArrayCollection(array);
    var customDropDownList:DropDownList = new DropDownList();
    customDropDownList.dataProvider=sampleArrayCollection;
    customDropDownList.prompt="Select ...";
    customDropDownList.labelField="Answer Options:";
    //calculating the max width
    var componentWidth=10; //default
    for each(var answerText in array){
     Alert.show("Txt size: "+ answerText.length + " pixels: " + answerText.length*9); 
     if(answerText.length * 8 > componentWidth){
      componentWidth=answerText.length * 8;
     }
    }
    customDropDownList.width=componentWidth;
    answers.addChild(customDropDownList);
   }
Run Code Online (Sandbox Code Playgroud)

任何想法或解决方案都很受重视.

谢谢

string fonts actionscript-3 flex4 drop-down-menu

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