所以我在这里根据参考指南设置了power mock .这一切似乎都可以通过单个测试类完美运行.但是当执行多个JUnit测试时,我在第二个测试类上遇到以下错误.
正如您从下面的堆栈跟踪中看到的,我正在尝试模拟一个otto Bus实例.它似乎在第一个测试类上正确模拟,但在第二个类上我得到了这个类转换异常.
在堆栈跟踪上我得到了禁用Objenisis缓存的建议,但我不知道如何实现这一点,如果这实际上是根本原因,因为我正在使用classloading-xstream:1.6.2根据上面附带的Robolectric Wiki链接.
如果我运行一个JUnit测试类,那么我的设置很有效,但是一旦我尝试在一个包中运行所有测试,只有第一个测试可以工作,后续测试将获得类强制转换异常.
org.mockito.exceptions.base.MockitoException:
ClassCastException occurred while creating the mockito proxy :
class to mock : 'com.squareup.otto.Bus', loaded by classloader : 'org.robolectric.internal.bytecode.InstrumentingClassLoader@1593948d'
created class : 'com.squareup.otto.Bus$$EnhancerByMockitoWithCGLIB$$82a3b196', loaded by classloader : 'org.robolectric.internal.bytecode.InstrumentingClassLoader@1593948d'
proxy instance class : 'com.squareup.otto.Bus$$EnhancerByMockitoWithCGLIB$$82a3b196', loaded by classloader : 'org.mockito.internal.creation.util.SearchingClassLoader@618ff5c2'
instance creation by : ObjenesisInstantiator
You might experience classloading issues, disabling the Objenesis cache *might* help (see MockitoConfiguration)
at org.powermock.api.mockito.repackaged.ClassImposterizer.imposterise(ClassImposterizer.java:61)
at org.powermock.api.mockito.repackaged.ClassImposterizer.imposterise(ClassImposterizer.java:49)
at org.powermock.api.mockito.repackaged.CglibMockMaker.createMock(CglibMockMaker.java:24)
at org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:45)
at com.acme.android.myapp.services.gcm.handlers.RequestLogoutHandlerTest.setup(RequestLogoutHandlerTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at …Run Code Online (Sandbox Code Playgroud) unit-testing powermock robolectric android-testing powermockito
App1ClassLibrary1Windows 8类库项目添加到解决方案中PortableClassLibrary1针对Windows 8和Windows Phone 7.5的便携式类库添加到解决方案中HttpClientnuget包ClassLibrary1HttpClientnuget包PortableClassLibrary1ClassLibrary1和PortableClassLibrary1您在.appx包阶段遇到错误
Payload contains two or more files with the same destination path 'System.Net.Http.Primitives.dll'.
Source files:
\Projects\App1\PortableClassLibrary1\bin\Debug\System.Net.Http.Primitives.dll
\Projects\App1\packages\Microsoft.Net.Http.2.2.13\lib\win8\System.Net.Http.Primitives.dll
Run Code Online (Sandbox Code Playgroud)
请注意,如果您引用任何包含win8和便携式程序集混合的nuget包,则会再现相同的错误.
预期结果:库的大多数特定版本(win8 one)被打包到.appx中,并且忽略了可移植版本
有关如何欺骗appx打包程序并构建此类Windows 8项目的任何想法?
我有一个包含私有可变数据列表的类.
我需要在以下条件下公开列表项:
应该将哪个getter函数标记为推荐方法?或者你能提供更好的解决方案吗?
class DataProcessor {
private final ArrayList<String> simpleData = new ArrayList<>();
private final CopyOnWriteArrayList<String> copyData = new CopyOnWriteArrayList<>();
public void modifyData() {
...
}
public Iterable<String> getUnmodifiableIterable() {
return Collections.unmodifiableCollection(simpleData);
}
public Iterator<String> getUnmodifiableIterator() {
return Collections.unmodifiableCollection(simpleData).iterator();
}
public Iterable<String> getCopyIterable() {
return copyData;
}
public Iterator<String> getCopyIterator() {
return copyData.iterator();
}
}
Run Code Online (Sandbox Code Playgroud)
UPD:这个问题来自关于列表getter实现的最佳实践的真实代码审查讨论
我正在使用 aMaterialButton并且我需要它来产生无边界的涟漪效果。
我试过设置无边界波纹, android:background="attr/selectableItemBackgroundBorderless"但没有运气。看起来MaterialButton它的背景和波纹分离了。我检查了来源,我看到在 MaterialButtonHelper 类中设置了可绘制的波纹。我无法rippleDrawable通过 MaterialButton进行覆盖。
有没有办法使用具有无边界波纹的 MaterialButton?
我需要把重点放在文本框上.问题是当页面上存在WebBrowser控件时,SIP显示为选择了文本框,但光标在文本框中不可见,输入不会转到文本框.
如果我将WebBrowser控件注释掉,那么行为就像预期的那样 - 当加载页面时,光标在TextBox中闪烁.
这是XAML:
<phone:PhoneApplicationPage
x:Class="WP7Sample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
Loaded="MainPageLoaded">
<StackPanel x:Name="LayoutRoot">
<TextBox x:Name="txt"/>
<phone:WebBrowser/>
</StackPanel>
</phone:PhoneApplicationPage>
Run Code Online (Sandbox Code Playgroud)
而代码隐藏:
void MainPageLoaded(object sender, RoutedEventArgs e)
{
txt.Focus();
}
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的解决方法,但没有运气.也就是说,我试图从Load,NavigatedTo等事件中调用SetFocus.我也尝试将焦点设置为其他控件,然后返回文本框,也没有运气.
有人可以为这个问题提供解决方法吗?
顺便说一下,问题是在仿真器上,HTC Mozart和Trophy设备上重现,所有设备都安装了NoDo更新.
在Windows Phone上,我可以WebException使用StatusCode == HttpStatusCode.NotFoundif
在Windows Phone上WebException的状态适用WebExceptionStatus.UnknownError于这两种情况.
如何1从案例中判断案件2?
我观察到的是连接错误(找不到服务器)ResponseUri为空并且WebResponse标题包含0项目.
编辑
ResponseUri不是空的,而是OriginalString空的
这样做是否安全:
catch (WebException ex)
{
switch (ex.Response.StatusCode)
{
...
case HttpStatusCode.NotFound:
if (ex.Response.ResponseUri == null
|| string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
DoServerNotFound();
else
DoServerReturned404();
Run Code Online (Sandbox Code Playgroud) 我有一个带有 Transfer-Encoding: chunked 的服务器响应
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Mon, 18 Feb 2013 08:22:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
c7
{<some json data>}
0
Run Code Online (Sandbox Code Playgroud)
在 json 数据之前查看 c7 块大小。
如何在 Windows Phone 中使用 读取没有块的原始响应流HttpWebResponse?
提示:要使服务器禁用分块输出,我只需要指定 HTTP/1.0 协议版本。但我不知道该怎么做,因为Windows Phone 或 Silverlight 中没有类中的ProtocolVersion属性HttpWebRequest
c# silverlight httpwebrequest transfer-encoding windows-phone-7
我有一个用sonarqube分析的多模块gradle java项目.
我需要完全跳过一个模块的sonarqube分析.
我无法在sonarqube文档中找到解决方案.最近的页面是Narrowing The Focus,但它是关于跳过文件和目录,而我想跳过整个模块.请参阅https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus
c# ×2
java ×2
android ×1
appx ×1
arraylist ×1
browser ×1
focus ×1
gradle ×1
iterable ×1
iterator ×1
nuget ×1
powermock ×1
powermockito ×1
ripple ×1
robolectric ×1
silverlight ×1
sonarqube ×1
textbox ×1
unit-testing ×1
windows-8 ×1