我有一个集成测试套件.我有一个IntegrationTestBase课程,我的所有测试都要扩展.此基类具有@Before(public void setUp())和@After(public void tearDown())方法来建立API和DB连接.我一直在做的就是在每个测试用例中调用这两个方法并调用super.setUp()和super.tearDown().但是,如果有人忘记调用父类或者把它们放在错误的地方,并抛出一个异常,他们会忘记在最后什么超级调用此可能会出现问题.
我想要做的是在基类上创建setUp和tearDown方法final,然后添加我们自己的注释@Before和@After方法.做一些初始测试似乎总是按此顺序调用:
Base @Before
Test @Before
Test
Test @After
Base @After
Run Code Online (Sandbox Code Playgroud)
但我只是担心订单无法保证并且可能会导致问题.我环顾四周,没有看到任何关于这个问题的内容.有谁知道我能做到这一点而没有任何问题吗?
码:
public class IntegrationTestBase {
@Before
public final void setUp() { *always called 1st?* }
@After
public final void tearDown() { *always called last?* }
}
public class MyTest extends IntegrationTestBase {
@Before
public final void before() { *always called …Run Code Online (Sandbox Code Playgroud) 我刚刚看到类似这样的代码:
public class Scratch
{
public static void main(String[] args)
{
Integer a = 1000, b = 1000;
System.out.println(a == b);
Integer c = 100, d = 100;
System.out.println(c == d);
}
}
Run Code Online (Sandbox Code Playgroud)
运行时,这段代码将打印出来:
false
true
Run Code Online (Sandbox Code Playgroud)
我理解为什么第一个是false:因为这两个对象是单独的对象,所以==比较引用.但我无法弄清楚,为什么第二个声明会回来true?当Integer的值在一定范围内时,是否会出现一些奇怪的自动装箱规则?这里发生了什么?
使用C#,我想获得我的计算机拥有的RAM总量.使用PerformanceCounter,我可以通过设置获得可用ram的数量:
counter.CategoryName = "Memory";
counter.Countername = "Available MBytes";
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到获得总内存量的方法.我该怎么做呢?
更新:
MagicKat:我在搜索时看到了它,但它不起作用 - "你错过了一个装配或参考吗?".我希望将它添加到参考文献中,但我没有在那里看到它.
我正在制作一个简单的REST客户端,用于我的C#应用程序.在Windows上的.net它适用于http://和https://连接.在Ubuntu 10.10的单声道2.6.7(也用2.8测试,结果相同)只有http://有效.https:// connections在request.GetResponse()方法上抛出此异常:
Unhandled Exception: System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- …Run Code Online (Sandbox Code Playgroud) 我使用的是Windows Vista和C#.net 3.5,但我让我的朋友在XP上运行程序并遇到同样的问题.
所以我有一个C#程序,我在后台运行,在SystemTray中有一个图标.我有一个低级键盘钩,所以当我按下两个键(在这种情况下为Ctr +窗口)时,它将拉动应用程序的主窗体.在组合键按下甚至处理程序中将表单设置为全屏:
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
Run Code Online (Sandbox Code Playgroud)
所以它基本上有效.当我点击CTR + Windows时,它会调出表单,无论我关注哪个程序.但有时候,任务栏仍然会显示在我不想要的表单上.当我按下那个键组合时,我希望它始终是全屏的.
我认为这与应用程序最初关注的内容有关.但即使我点击我的主表单,任务栏有时也会停留在那里.所以我想知道焦点是否真的是问题.看起来有时候任务栏很顽固,并且不想坐在我的程序后面.
任何人有任何想法如何解决这个问题?
编辑:更多详细信息 - 当您将其置于全屏模式或将powerpoint置于演示模式时,我试图获得与Web浏览器相同的效果.
在Windows窗体中,您可以将边框样式设置为none并最大化窗口.但有时窗口不会出于某种原因覆盖任务栏.一半的时间.
如果我将主窗口放在最顶层,那么当我点击它时其他窗口会落在它后面,如果任务栏被隐藏,我不想要它.
我一直在寻找,我还没有找到我将如何从C#中做到这一点.
我想要这样做,所以我可以告诉谷歌Chrome 从我的C#应用程序前进,后退,打开新标签,关闭标签,打开新窗口和关闭窗口.
我使用WinAmp做了类似的事情
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
Run Code Online (Sandbox Code Playgroud)
还有一些其他人.但我不知道要发送什么消息或者如何找到传递给它的窗口,或者其他什么.
那么有人可以告诉我如何从C#向Chrome发送这6个命令吗?谢谢
编辑:好的,我正在投票,所以也许我不够清楚,或者人们假设我没有试图自己解决这个问题.
首先,我对整个DllImport的东西不太满意.我还在学习它是如何运作的.
几年前我在winamp找到了如何做同样的想法,我正在查看我的代码.我做了所以我可以跳过一首歌,回去,播放,暂停,并停止从我的C#代码winamp.我开始导入:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow([MarshalAs(UnmanagedType.LPTStr)] string lpClassName, [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SendMessageA(IntPtr hwnd, int wMsg, int wParam, uint lParam);
[DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern int GetWindowText(IntPtr hwnd, string lpString, int cch); …Run Code Online (Sandbox Code Playgroud) 我们将Selenium与Java API和一些Javascript用户扩展一起使用.我们在应用程序中使用了大量的AJAX调用.我们的很多测试都是随机失败的,因为有时候AJAX调用比其他时候完成得慢,所以页面没有完全加载.我们通过等待特定元素或Thread.sleep来解决这个问题.我试图找到一种方法,而不是等待网络流量完成.这样我们就可以这样做:
selenium.click("some JS button");
selenium.waitForNetwork();
assertTrue(something);
Run Code Online (Sandbox Code Playgroud)
这样我们可以摆脱线程休眠,并且当服务器响应更快并且由于时序问题而没有那么多测试失败时测试通过更快.
我无法找到一种方法来搜索Google.有没有人有任何想法我们如何才能做到这一点?(最好是通过Javascript或Java API,但欢迎所有建议).
注意:"waitFor"的其他变体不是我想要的.我们已经在点击和其他内容中使用了这些内容.我正在寻找等待NETWORK TRAFFIC的东西.感谢所有反馈,我将尝试一些建议,但我仍然对其他想法持开放态度.
谢谢.
我在IntelliJ中玩Google App Engine.我正在尝试在JSP中使用JSTL标记.我在互联网上尝试了两种不同的URI,它们都给了我错误:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)
和
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)
它会删除URL,并说它无法解析taglib.我已经尝试删除URL的不同部分,看看Ctrl- Space给我任何自动完成的爱,但没有运气.
任何想法,我需要做什么才能使这项工作?
我正在使用Adobe Flex/Air制作应用程序.我想知道是否有办法让Air应用程序运行的操作系统?
我们正在开发一个Windows Phone 7原型应用程序,我们需要一个Graphing/Charting控件来使用.我们查看了Silverlight Toolkit,它有一些看起来很棒的控件.但是,我们无法让它发挥作用.每当我们从该工具包向XAML添加一个控件时,它会在尝试在运行时加载XAML时抛出异常,即使它似乎在设计器中工作.我认为这是因为手机实际上不支持某种依赖性.
有谁知道如何解决问题或知道在Windows Phone 7上运行的图表软件?
这是一个不起作用的代码示例.我们下载并安装了Silverlight Toolkit的4.0 beta版.添加了DLL作为参考.添加此项以导入命名空间:
xmlns:c="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"`
Run Code Online (Sandbox Code Playgroud)
然后添加这个来制作图表:
<c:Chart>
<c:PieSeries>
<c:PieSeries.ItemsSource>
<l:IntList>
<sys:Int32>23</sys:Int32>
<sys:Int32>2</sys:Int32>
<sys:Int32>1</sys:Int32>
<sys:Int32>34</sys:Int32>
</l:IntList>
</c:PieSeries.ItemsSource>
</c:PieSeries>
</c:Chart>
Run Code Online (Sandbox Code Playgroud)
设计师完美地展示了馅饼,但是当我尝试编译和部署它时抛出一个异常,说它无法找到MainPage.xaml.这让我相信MainPage.xaml没有正确编译(不确定,因为我还是Silverlight的新手)
这是例外:
System.Windows.Markup.XamlParseException occurred
Message=2255 An error has occurred. [Line: 36 Position: 2]
LineNumber=36
LinePosition=2
StackTrace:
...
Run Code Online (Sandbox Code Playgroud)
在这条线上:
System.Windows.Application.LoadComponent(this, new System.Uri("/Twitpic;component/MainPage.xaml", System.UriKind.Relative));
Run Code Online (Sandbox Code Playgroud) c# ×4
java ×4
.net ×1
air ×1
apache-flex ×1
autoboxing ×1
fullscreen ×1
https ×1
installation ×1
jstl ×1
junit ×1
memory ×1
message ×1
mono ×1
networking ×1
selenium ×1
silverlight ×1
teardown ×1
webrequest ×1
winforms ×1