我的一般设置:我们编写了一个带有小gui的excel导入器,允许非程序员使用"Button.Click"等命令编写和执行gui-tests.底层框架是TestStack.White.在导入excel文件和一些其他用户交互之后,测试在System.ComponentModel.BackgroundWorker内启动,只要我不查看(或甚至与包含大量childelements的元素交互),它就可以正常工作.
但是,只要我与TestStack.White.UIItems.WindowItems.Window或具有大量元素的TestStack.White.UIItems.UIItemContainer进行交互,testexecution就会结束.
通过交互,我的意思是从简单的东西,如非空检查或分配到局部变量或类似要求它的子计数.结束测试的一些例子:1)
if(theElement != null){ //everything after this line does not happen. The operator doesn't seem to be overloaded
doStuff(); //it never reaches this point
}
Run Code Online (Sandbox Code Playgroud)
2)
UIItemContainer pointOfInterest = theElement; //everything after this line does not happen
Run Code Online (Sandbox Code Playgroud)
3)
System.Diagnostics.Debug.WriteLine("AmountOfElements: " + UIAnchor.Items.Count); //the output doesn't come. everything after this line does not happen
Run Code Online (Sandbox Code Playgroud)
在没有数百个元素的窗口中,所有三个示例都按预期工作.
我的意思是很多元素,例如一个内部有ScrollView的Window,它有一个包含数十个甚至数百个条目的表,其中每个条目包含3-4列文本或复选框或类似的东西.
BackgroundWorkers RunWorkerCompleted以及Disposed也不会被调用.我没有得到任何异常,即使有目的地放置了try/catch块我也没有得到任何东西.调试器到达导致问题的那一行,就是这样.之后没有任何事情发生,即使等待1小时.
相反,我得到了几个不同的"线程{某些十六进制ID}已退出代码259(0x103)." 在Visual Studio的输出窗口中.这是我上次的测试执行:
The thread 0x830 has exited with code 259 (0x103).
The thread 0xfc0 has exited with code 259 (0x103). …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现或多或少有效的打印API。我可以使用api级别19中引入的打印框架将文件发送到Google Cloud Print应用程序并进行打印。但是如果我不必一直用手发送纸格式,那将是很好的,因为它以纸格式开始索引卡4x6,这不是我想要的,我想要A4。如果GCP应用程序会记住配置,我可能会接受它,但是我必须为每个单独的printjob设置它,这有点令人沮丧。
我发现我可以通过设置PrintAttributes来对此进行归档。但是,无论我将它们设置为什么,它始终是纸质格式的索引卡4x6。如果我在打印对话框中将格式手动设置为A4,则效果很好
PrintManager printManager = (PrintManager) ctx.getSystemService(Context.PRINT_SERVICE);
String jobName = "Jobname";
PrintAttributes.Builder builder = new PrintAttributes.Builder();
builder.setMediaSize(PrintAttributes.MediaSize.ISO_A4);
builder.setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME);
PrintAttributes attr = builder.build();
printManager.print(jobName, new PrintDocumentAdapterForFiles(ctx, new File(filePath), jobName), attr );
Run Code Online (Sandbox Code Playgroud)
万一重要:打印机是Canon Pixma IP 110