我们的团队有数百个集成测试,可以访问数据库并验证结果.我有两个基类用于所有集成测试,一个用于仅检索测试,一个用于创建/更新/删除测试.仅检索基类在TestFixtureSetup期间重新生成数据库,因此每个测试类只执行一次.CUD基类在每次测试之前重新生成数据库.每个存储库类都有自己的相应测试类.
可以想象,整个过程需要相当长的时间(接近7-8分钟才能运行并快速增长).将此运行作为我们的CI(CruiseControl.Net)的一部分运行不是问题,但在本地运行需要很长时间,并且在提交代码之前确实禁止运行它们.
我的问题是,是否有任何最佳实践可以帮助加快这些类型的集成测试的执行速度?
我无法在内存中执行它们(la sqlite),因为我们使用sqlite不支持的某些特定于数据库的功能(计算列等).
此外,整个团队必须能够执行它们,因此在SQL Server Express的本地实例上运行它们可能容易出错,除非这些实例的连接字符串完全相同.
你是如何在你的店里完成这项工作的,哪些方面有效?
谢谢!
我们使用ELMAH处理ASP.Net MVC c#应用程序中的错误,在我们捕获的异常中,我们正在做这样的事情:
ErrorSignal.FromCurrentContext().Raise(exception);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对捕获的异常进行单元测试时,我得到以下消息:
System.ArgumentNullException: Value cannot be null.
Parameter name: context
Run Code Online (Sandbox Code Playgroud)
如何模拟FromCurrentContext()调用?我还应该做些什么呢?
仅供参考......我们目前正在使用Moq和RhinoMocks.
谢谢!
我有以下将排除所有按钮,但我怎么能排除隐藏的字段?
$("#selector").find(":input:not(:button)").each(function (i) { // do something
Run Code Online (Sandbox Code Playgroud)
我敢肯定这可能很简单,我找不到它.
非常感谢!
是否可以使用Fluent Nhibernate将枚举映射为字符串?
当鼠标悬停在行上时,是否有人知道如何为具有不同背景颜色的表格行添加边框?
我已经能够用这个改变行的背景颜色:
$(document).ready(function() {
$(function() {
$('.actionRow').hover(function() {
$(this).css('background-color', '#FFFF99');
},
function() {
$(this).css('background-color', '#FFFFFF');
});
});
});
Run Code Online (Sandbox Code Playgroud)
但是我无法添加边框颜色.我意识到边框不能直接应用于表格行标签,但我希望有人知道一些jQuery巫术魔法可以找到所选行中的表格单元格并将一些样式应用于那些创建边框.
谢谢!
我们有一个2008解决方案,它有一个文件系统网站作为解决方案的一部分.此解决方案由Team Foundation Server进行源代码管理.每次解决方案关闭时,它都会检出一个名为vwd.webinfo的文件,或者尝试并抱怨其他人已经检查过它.
从源代码管理中删除文件无法解决问题,因为它会因某种原因自动重新添加.
为什么会发生这种情况,我们可以做些什么来消除这个唠叨?
非常感谢!
tfs vs-web-site-project visual-studio-2008 visual-studio vcs-checkout
我在7500多个对象上运行一个Parallel.For循环.在for循环中,我正在为每个对象做很多事情,特别是调用两个Web服务和两个内部方法.Web服务只是检查对象,处理并返回一个字符串,然后我将其设置为对象上的属性.两种内部方法也是如此.
我没有写任何东西到磁盘或从磁盘读取.
我还在带有标签和进度条的winforms应用程序中更新UI,以便让用户知道它在哪里.这是代码:
var task = Task.Factory.StartNew(() =>
{
Parallel.For(0, upperLimit, (i, loopState) =>
{
if (cancellationToken.IsCancellationRequested)
loopState.Stop();
lblProgressBar.Invoke(
(Action)
(() => lblProgressBar.Text = string.Format("Processing record {0} of {1}.", (progressCounter++), upperLimit)));
progByStep.Invoke(
(Action)
(() => progByStep.Value = (progressCounter - 1)));
CallSvc1(entity[i]);
Conversion1(entity[i]);
CallSvc2(entity[i]);
Conversion2(entity[i]);
});
}, cancellationToken);
Run Code Online (Sandbox Code Playgroud)
这是在Win7 32位机器上进行的.
关于为什么当增量器大约在1370左右时突然冻结的任何想法(这是1361,1365和1371)?
关于如何调试这个并看看有什么锁定的任何想法?
编辑:
以下评论的一些答案:
@BrokenGlass - 不,没有互操作.我将尝试x86编译并让你知道.
@chibacity - 因为它是在后台任务上,所以它不会冻结UI.直到它冻结的时间,进度条和标签每秒大约2点.当它冻结时,它就会停止移动.我可以验证它停止的号码是否已被处理,但不再处理.双核2.2GHz的CPU使用率在运行期间最低,每次3-4%,冻结后1-2%.
@Henk Holterman - 到达1360需要大约10-12分钟,是的,我可以验证所有这些记录是否已经处理但不是剩余的记录.
@CodeInChaos - 谢谢,我会试试!如果我拿出并行代码,代码确实有用,它只需要一天又一天.我没有尝试过限制线程数,但是会.
编辑2:
关于Web服务发生了什么的一些细节
基本上,Web服务正在发生的是它们传递一些数据并接收数据(XmlNode).然后在Conversion1进程中使用该节点,该进程又在实体上设置另一个属性,该属性被发送到CallSvc2方法,依此类推.它看起来像这样:
private void CallSvc1(Entity entity)
{
var svc = new MyWebService();
var …Run Code Online (Sandbox Code Playgroud) 有没有人知道如何将一个项目添加到列表但是这样做它是按字母顺序使用jQuery排序的?我有以下代码,只是将一个项目从下拉列表添加到列表的末尾:
$("#projectList").append(
"<li>"
+ $("#Projects :selected").text()
+ " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
+ "</li>"
);
Run Code Online (Sandbox Code Playgroud)
但我希望能够将其插入适当的位置,而不是仅仅附加到现有列表的末尾.
任何帮助是极大的赞赏!谢谢!
使用c#3和.Net Framework 3.5,我有一个Person对象
public Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int SSN { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个列表:
List<Person> persons = GetPersons();
Run Code Online (Sandbox Code Playgroud)
如何在SSN在列表中不唯一的人中获取所有Person对象,并将其从人员列表中删除,并理想地将它们添加到另一个名为" List<Person> dupes"的列表中?
原始列表可能如下所示:
persons = new List<Person>();
persons.Add(new Person { Id = 1,
FirstName = "Chris",
LastName="Columbus",
SSN=111223333 }); // Is a dupe
persons.Add(new Person { Id = 1,
FirstName = "E.E.",
LastName="Cummings",
SSN=987654321 });
persons.Add(new Person { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用UIDocumentInteractionController presentPreviewAnimated方法在iOS设备上显示pdf,但它会一直显示一个空白文档.我认为它可能与字符编码有关,但我不确定.如果我使用UIWebView,我可以显示pdf,而不是文档交互控制器.
//更新9/18/14现在正在使用Xcode 6的GM版本.
//更新2014年8月22日
奇怪的是,从DocumentInteractionController,如果我点击右上角的"打开方式"图标并选择类似iBooks的内容,则pdf会正确显示.似乎只是预览不想在屏幕上显示它.
这是我的代码(在Swift中):
// data is coming in as NSISOLatin1StringEncoding
func displayPdfInUIDocumentInteractionController(data: NSData) {
let fileName = NSTemporaryDirectory().stringByAppendingPathComponent("myFile.pdf")
let url: NSURL! = NSURL(fileURLWithPath: fileName)
// this does not seem to make a difference
// let pdfString = NSString(data: data, encoding: NSISOLatin1StringEncoding)
// pdfString.writeToURL(url!, atomically: true, encoding: NSISOLatin1StringEncoding, error: nil)
data.writeToURL(url, atomically: true)
if url != nil {
let docController = UIDocumentInteractionController(URL: url)
docController.UTI = "com.adobe.pdf"
docController.delegate = self
docController.presentPreviewAnimated(true)
}
}
Run Code Online (Sandbox Code Playgroud)
此代码确实正确显示了pdf:
// data is coming …Run Code Online (Sandbox Code Playgroud) c# ×3
jquery ×3
.net ×1
asp.net-mvc ×1
css ×1
elmah ×1
freeze ×1
html-lists ×1
ios ×1
list ×1
mocking ×1
pdf ×1
swift ×1
tfs ×1
vcs-checkout ×1