我正在尝试通过使用开发人员工具控制台监控网络来调试Internet Explorer 10的问题,但我遇到了奇怪的行为 - 有时控制台只是关闭而且所有记录的流量都丢失了.
更确切地说,呼叫序列如下(这实际上是标准的SAML 2.0身份验证流程,IDP上的客户端证书登录):
请注意,初始访问后的所有内容都会自动发生,用户无需单击任何链接或提交某些表单.
自动提交POST表单是这样的:
<html>
<head>
... some head data here...
</head>
<body onLoad="document.forms[0].submit()">
<form name="auto.submit.form">
... some form fields here...
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
问题出现在第2点之后 - 开发人员工具控制台刚关闭但这似乎不会影响浏览器的实际工作.
我也试过HttpWatch Professional - 我得到了同样的效果 - 插件只是停止录制或完全关闭.在这种情况下我不能使用Fiddler,因为它阻止我调试实际问题(即当启用Fiddler时它可以工作).此问题也是IE特有的,因此我无法使用其他浏览器的开发人员工具.
关于这个的任何想法/提示?
更新:我想我至少知道了一部分问题:当导航到不同区域时,开发人员工具窗口关闭.即在我的情况下,步骤2中的主机位于Internet区域,而来自本地Intranet区域中其他步骤的主机,然后在从第2点到第3点的导航完成后关闭开发工具窗口(而不是重定向时)从1到2完成).不同之处在于,第一个是通过javascript和自提交表单完成的,而另一个只是302重定向响应.
将所有站点添加到本地Intranet区域后,问题停止发生.仍然是一个谜,似乎是一个IE问题而不是开发工具问题,因为HttpWatch似乎也受其影响.
internet-explorer developer-tools httpwatch internet-explorer-10
我陷入了Android的一个奇怪问题 - 我希望有一个看起来像这样的按钮:
|-----------------------------------------------------------------------|
| [icon] <5px> [text text text] |
|-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)
并且组([icon] <5px> [文本文本文本])应居中.请注意,5px仅用作占位符,用于图标和文本之间的任何填充
我在这里找到了一些答案或多或少地围绕设置背景(我不想做因为我有另一个背景)或使用android:drawableLeft属性来设置图标.
但是看起来像setCompoundDrawablesWithIntrinsicBounds方法的文档有点误导(见这里).它声明图像位于TEXT的左/右/上/下侧,这是不正确的.图标位于按钮的相应侧.例如:
设置android:drawableLeft属性将图标放在最左边的位置并获取此信息(使用重力CENTER):
|-----------------------------------------------------------------------|
| [icon] [text text text] |
|-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)
或者这个(重力为左):
|-----------------------------------------------------------------------|
| [icon] [text text text] |
|-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)
两个都是丑陋的地狱:(
我找到了一个看起来像这样的解决方法:
public static void applyTextOffset(Button button, int buttonWidth) {
int textWidth = (int) button.getPaint().measureText(button.getText().toString());
int padding = (buttonWidth / 2) - ((textWidth / 2) + Constants.ICON_WIDTH + Constants.ICON_TO_TEXT_PADDING);
button.setPadding(padding, 0, 0, 0);
button.setCompoundDrawablePadding(-padding);
}
Run Code Online (Sandbox Code Playgroud)
它或多或少有效,但由于以下原因,我不喜欢它:
难道没有更优雅的解决方案吗?
我需要编写一个模拟 java.lang.Class 类实例的测试。这可以通过 PowerMock 实现吗?
我尝试执行以下操作:
PowerMock.createMock(Class.class);
Run Code Online (Sandbox Code Playgroud)
结果是:
java.lang.IllegalAccessError: java.lang.Class
at sun.reflect.GeneratedSerializationConstructorAccessor12.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:40)
at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:223)
at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2146)
at org.powermock.api.easymock.PowerMock.createMock(PowerMock.java:89)
Run Code Online (Sandbox Code Playgroud)
根据 PowerMock 的文档,这应该是可能的,但我仍然收到此错误。
有人设法做到这一点吗?
编辑:为什么我需要这个?在测试的编码中有以下语句:
if (someObject.getClass().getName().equals(SOME_CLASS_NAME_THAT_I_DONT_HAVE_ACCESS_TO)) { ... do some stuff ... }
Run Code Online (Sandbox Code Playgroud)
我需要我的测试来达到“if”中的编码,我什至不能提供具有相应名称的类的模拟实例。
作为一种解决方法,我可以在测试中创建一个具有相同名称和包的类,但它很难看。
编辑2:
我也尝试了这个链接的建议
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.junit.Test;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Test1.class})
public class Test1 {
@Test
public void test() {
PowerMock.createMock(Class.class);
}
}
Run Code Online (Sandbox Code Playgroud)
结果是一样的:“java.lang.IllegalAccessError: java.lang.Class”
所以作为最终结果 - 似乎没有办法创建 java.lang.Class 的模拟实例
谢谢
根据java.util.HashSet.contains()的JavaDoc,该方法执行以下操作
如果此set包含指定的元素,则返回true.更正式地,当且仅当此集合包含元素e时才返回true (o == null?e == null:o.equals(e)).
但是,这似乎不适用于以下代码:
public static void main(String[] args) {
HashSet<DemoClass> set = new HashSet<DemoClass>();
DemoClass toInsert = new DemoClass();
toInsert.v1 = "test1";
toInsert.v2 = "test2";
set.add(toInsert);
toInsert.v1 = null;
DemoClass toCheck = new DemoClass();
toCheck.v1 = null;
toCheck.v2 = "test2";
System.out.println(set.contains(toCheck));
System.out.println(toCheck.equals(toInsert));
}
private static class DemoClass {
String v1;
String v2;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为类单元okhttp3编写单元测试,而我却在模拟okhttp3.Response类.
它被宣布为final,大多数模拟框架都不能模拟最终类.我宁愿不使用Powermock也只是为了这个.
看一下代码,我可以看到有可能创建一个Response类的真实实例并在测试中使用它,但与仅模拟一个方法(在我的情况下)相比,它会更多代码并且可读性更低.
okhttp3.Response类的"final"修饰符背后的任何具体原因或在以后的版本中删除它的任何计划?