根据网页更新,显然,sleep或wait_until使用最新版本的Capybara无效.
但是,如果我添加sleep(1)对测试的调用,我有一组只能在快速机器上运行的测试.也就是说,测试看起来像:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
Run Code Online (Sandbox Code Playgroud)
变
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
Run Code Online (Sandbox Code Playgroud)
在那里我定义unix_wait为:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
Run Code Online (Sandbox Code Playgroud)
问题是,我有一台旧的Ubuntu 12.04四核笔记本电脑在Jenkins上运行这些测试,一切都运行良好,没有unix_wait电话.测试在运行Ubuntu 13.10和macbook pro笔记本电脑的六核桌面上随机失败,但是如果我添加了unix_wait调用,那么测试就会通过.
测试失败本身表示加载失败(即某些运行中缺少css元素,但其他运行中没有),并且当手动加载站点时,被测试的内容实际上有效.
那么这里适当的行动是什么?显然,sleep测试期间不允许,也不允许wait_until.然而,睡眠是有效的,但它对我来说似乎非常粗糙.我应该看看#synchronized吗?从我从那些博客文章中收集的内容来看,当我打电话时,它已经被调用click_link,并且测试仍然失败.
这里接受的协议是什么?
我应该补充一下,因为我认为这很重要:这些都是javascript测试.我正在使用基于qt4(而不是qt5)的capybara-webkit.我正在考虑切换到poltergeist或其他一些javascript驱动程序作为调试步骤.
我有一个长期记忆的实验程序,我想知道它的实际内存占用.任务管理器说(在windows7-64中)该应用程序正在消耗800 MB的内存,但根据任务管理器分配的内存总量为3.7 GB.所有已分配内存的总和不等于3.7gb.如何在运行中确定应用程序实际消耗的内存量.
推论:任务管理器实际报告的内存是什么?它似乎并不是分配给应用程序本身的所有内存.
继续我在这里提出的上一个问题,我现在需要转到vs2010.
我已经获得了2010年6月5日版WiX 3.5的最新每周版本.
这是我的安装程序的相关行:
<ItemGroup>
<BootstrapperFile Include="Microsoft.Net.Framework.4.0">
<ProductName>.NET Framework 4.0</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Windows.Installer.4.5">
<ProductName>Windows Installer 4.5</ProductName>
</BootstrapperFile>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
和
<GenerateBootstrapper ApplicationFile="MySetup.msi" ApplicationName="MyProgram" BootstrapperItems="@(BootstrapperFile)" Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" ComponentsLocation="Relative" OutputPath="$(OutputPath)" Culture="en" />
Run Code Online (Sandbox Code Playgroud)
但是,它只是不起作用.在vs2010中,.NET Framework 4.0和Windows Installer 4.5文件旁边有感叹号,属性页面将它们列为"Unknown BuildAction BootstrapperFile",而构建似乎根本不会安装.NET 4.0.相关警告是:
C:\source\depot\project\vs2010\WiXSetup\WiXSetup.wixproj(68,5): warning MSB3155: Item 'Microsoft.Net.Framework.4.0' could not be located in 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'.
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序在WPF中的Image对象内显示一个图像.该图像包含在xaml看起来像的控件中:
<UserControl x:Class="MyProgram.NativeImageDisplay"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="UserControl_Loaded">
<Canvas Name="border" Background="Black" >
<Image Name="image" StretchDirection="Both" Stretch="Uniform" ClipToBounds="True"
SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="HighQuality"></Image>
</Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
其中两个控件包含在窗口的网格中,如下所示:
<Grid Grid.Row="2" Name="DisplayCanvas">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<l:NativeImageDisplay x:Name="imageDisplay2" Grid.Column="1" ClipToBounds="True"/>
<l:NativeImageDisplay x:Name="imageDisplay" Grid.Column="0" ClipToBounds="True"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我在这里一直称裁剪是真的.
用户可以使用鼠标上的滚动按钮放大图像,最终调用图像上的ScaleTransform:
private void image_MouseWheel(object sender, MouseWheelEventArgs e)
{
if (!thumbnail)
{
TransformGroup transformGroup = (TransformGroup)border.RenderTransform;
ScaleTransform transform = (ScaleTransform)transformGroup.Children[0];
double oldScaleX = transform.ScaleX;
double oldScaleY = transform.ScaleY;
double zoom = e.Delta;
transform.ScaleX += zoom / 10000;
transform.ScaleY += zoom / 10000;
if (transform.ScaleX …Run Code Online (Sandbox Code Playgroud) 我在.NET中快速绘制一些东西时遇到了问题.我不认为任何特别的东西应该花费很多时间,但是在我试过的每台机器上,我都会遇到严重的问题.这是在vs2008 .NET中实现的,使用C#(在C++中有一些东西,但与绘图无关).
我有三个屏幕,用户应该能够在没有延迟的情况下在它们之间切换.在第一个屏幕上,有四个按钮,八个用户控件,包括两个按钮和每个6个标签,一个文本字段和一个下拉框.我不认为它那么多.
在第二个屏幕上,我有四个标签,六个按钮和两个控件,它们有六个按钮,一个opengl绘图上下文,每个约十个标签.
在第三个屏幕上,我有一个opengl上下文和10个按钮.
从任何屏幕翻转到任何屏幕都需要大约一秒钟.例如,如果我从第二个屏幕翻转到第一个屏幕,则整个应用程序会显示空白,显示背景屏幕,然后绘制第一个屏幕.很多时候,屏幕是零碎的,好像机器是故意在瑞典的一家工厂手工制作精美可口的字母,然后将每一个单独运送到我的屏幕上.我夸大了,我想说清楚,因为我不认为瑞典人和这次重绘一样慢.
第一个和第二个屏幕在内存中绘制,并存储在那里,只有一个'.Hide()'和'.Show()',使它们显示和消失.双缓冲似乎并不重要.每次重新绘制第三个屏幕,并且看起来绘制的时间与第一个和第二个相同.
有什么想法吗?会发生什么事?我该如何追踪它?
谢谢!
编辑:我应该补充说,任何C++处理等都发生在自己的线程中.偶尔会有一个MethodInvoke将操作结果绘制到屏幕上,但是这个问题在没有调用任何函数的情况下发生,只需按下按钮即可从一个屏幕进入下一个屏幕.
我有加密/复制保护问题.
我正在为使用加密狗的公司编写应用程序.请不要告诉我软件保护是无用的,或者我应该让它自由地飞到空中,或者我花费这么多时间是浪费; 这不是关于软件保护有效性的哲学问题,更像是如何操作.
据我了解,破解加密狗保护软件的第一步是从代码中删除对加密狗的所有调用(即修补可执行文件).另据我的理解,我可以在.NET中创建"强名称"以保护应用程序和程序集,如本MSDN文章中所述.
强大的命名是否足以确保我的应用程序无法轻松修补?或者我是否需要使用某种加密库?如果我需要使用库,哪一个,或者我在哪里可以获得有关设置的信息?
当然,下一步是将重要的算法放在加密狗上.我意识到这些只是专用饼干的速度颠簸,但随着我们的市场份额的增长,减速带来帮助我们达到不太敏锐地感受到海盗刺激的程度(我希望).
谢谢!
我需要计算高达100左右的阶乘数!为了确定一系列硬币翻转式数据是否是随机的,根据贝叶斯概率的维基百科条目. 正如你在那里看到的那样,必要的公式涉及3个因子计算(但是,有趣的是,这些因子计算中的两个是沿着到第三个计算的方式计算的).
我在这里看到了这个问题,但我认为这个整数很快就会被吹灭.我也可以创建一个更加智能的因子计算功能(即,如果我有11!/(7!3!),根据wiki示例,我可以去(11*10*9*8)/ 3!),但这对我来说过早优化,在某种意义上我希望它能够工作,但我并不关心速度(还).
那么,为了获得这个概率,我可以调用什么样的C#库来计算阶乘?我对可以进入阶乘计算的所有可怕性感兴趣,我只想以一种我可以操纵它的方式得到结果.在Math命名空间中似乎没有因子函数,因此问题.
我对网络编程很新(或者实际上,它已经很老了,因为我上次与网络混乱是HTML 1.1),但现在需要快速部署Web应用程序.似乎每次我转身时,都会有新的首字母缩略词和技术需要学习(JSON,XMLRPC,GWT,Javascript,Rails等).
这是我的应用必须做的事情:
我已经有了Java脚本和数据库来处理数据.在一台机器上,我可以运行一系列命令行程序来处理传入的数据块并将结果放回到mysql数据库中.那已经存在并且有效.
我想使用这些现有和经过测试的方法构建此任务的Web前端.我现在倾向于这种方法:
这是我的问题:看起来大多数用于Web的Ruby应用程序都会自动尝试构建某种本地数据库.我发现的所有Rails教程都是从创建自己的数据库并与之交互开始的,这正是我不想做的事情.
Rails是适合我的技术,还是使用Ruby DRb?我应该探索一些其他技术吗?
如果Rails或Ruby是正确的东西,我应该看什么?我已经有了编程Ruby书,并且已经将它用于一些后端内容以及使基本的DRb工作.
我有一个非常严重的多线程调试问题.在与串行设备交互时我遇到了某种时序问题,我需要跟踪它.我有三个主题:
我的问题实际上与调试这种情况有关.看起来我在每个线程中的每一行都必须有一个断点才能进行调试; 如果我在一个线程中断,调试器将不会单步执行该线程.我知道其他线程将继续更新,但是我不应该在调试器中执行正常的线程,即从一行到下一行?然后,我可以使用'threads'选项卡在线程之间切换.
我提到我在WPF,因为我不知道这是否会改变情况; 也许它确实如此,也许它没有.状态检查线程是UI控件的一部分,因为只需在UI启动时检查状态.该控件位于与主应用程序不同的库中.
我需要能够测试我的Rails应用程序返回的CSV文件的内容.
在我的控制器中,代码如下所示:
respond_to do |format|
format.html
format.js
format.csv do
if current_user.has_rights?
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=info.csv'
send_data generate_csv_file
else
send_data "Access denied"
end
end
end
Run Code Online (Sandbox Code Playgroud)
此代码有效 - 如果我访问具有适当权限的URL,则下载CSV文件.但是,我似乎无法与Poltergeist和Capybara进行任何合适的测试.
如果我执行以下操作,请回答此问题:
describe DashboardsController do
context "when format is csv" do
render_views
let(:csv_string) { get_csv_headers }
let(:csv_options) { {filename: "report.csv", disposition: 'attachment', type: 'text/csv; charset=utf-8; header=present'} }
let (:csv_user) {FactoryGirl.create(:csv_user)}
before do
sign_in csv_user
end
it "should return a csv attachment" do
# @controller.should_receive(:send_data).with("#{csv_string.join(',')}", csv_options).
# and_return { @controller.render …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
capybara ×2
.net-4.0 ×1
cliptobounds ×1
debugging ×1
dongle ×1
drawing ×1
drb ×1
encryption ×1
factorial ×1
javascript ×1
memory ×1
performance ×1
poltergeist ×1
ruby ×1
sinatra ×1
sleep ×1
taskmanager ×1
windows ×1
wix ×1
wpf ×1