小编kza*_*kza的帖子

在多个文件上使用Power Mock运行Robolectric测试时出现ClassCastException异常

所以我在这里根据参考指南设置了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

11
推荐指数
2
解决办法
4262
查看次数

Nuget,可移植库和WinRT appx:Payload包含两个或多个具有相同目标路径的文件

  1. 创建新的Windows 8应用程序 App1
  2. ClassLibrary1Windows 8类库项目添加到解决方案中
  3. PortableClassLibrary1针对Windows 8和Windows Phone 7.5的便携式类库添加到解决方案中
  4. 参考HttpClientnuget包ClassLibrary1
  5. 参考HttpClientnuget包PortableClassLibrary1
  6. 参考ClassLibrary1PortableClassLibrary1
  7. 编译解决方案

您在.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项目的任何想法?

nuget portable-class-library windows-8 windows-runtime appx

10
推荐指数
2
解决办法
5471
查看次数

在暴露内部收集物品时是否应使用Iterator或Iterable?

我有一个包含私有可变数据列表的类.

我需要在以下条件下公开列表项:

  • 清单不应在外面修改;
  • 应该清楚使用getter函数的开发人员无法修改他们获得的列表.

应该将哪个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实现的最佳实践的真实代码审查讨论

java iterator iterable arraylist copyonwritearraylist

10
推荐指数
1
解决办法
513
查看次数

如何使 MaterialButton 的波纹无边框

我正在使用 aMaterialButton并且我需要它来产生无边界的涟漪效果。

我试过设置无边界波纹, android:background="attr/selectableItemBackgroundBorderless"但没有运气。看起来MaterialButton它的背景和波纹分离了。我检查了来源,我看到在 MaterialButtonHelper 类中设置了可绘制的波纹。我无法rippleDrawable通过 MaterialButton进行覆盖。

有没有办法使用具有无边界波纹的 MaterialButton?

android ripple material-design

6
推荐指数
0
解决办法
581
查看次数

在WP7中,当页面上存在WebBrowser控件时,TextBox.Focus()不起作用

我需要把重点放在文本框上.问题是当页面上存在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更新.

browser textbox focus windows-phone-7

5
推荐指数
1
解决办法
3307
查看次数

如何区分由于连接不良而从服务器和NotFound返回的NotFound?

在Windows Phone上,我可以WebException使用StatusCode == HttpStatusCode.NotFoundif

  1. 服务器返回404
  2. 由于连接不良,无法找到服务器.

在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)

c# windows-phone-7

5
推荐指数
1
解决办法
430
查看次数

传输编码:在 Windows Phone 中分块

我有一个带有 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

5
推荐指数
1
解决办法
1338
查看次数

如何跳过gradle模块的sonarqube分析

我有一个用sonarqube分析的多模块gradle java项目.

我需要完全跳过一个模块的sonarqube分析.

我无法在sonarqube文档中找到解决方案.最近的页面是Narrowing The Focus,但它是关于跳过文件和目录,而我想跳过整个模块.请参阅https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus

java gradle sonarqube

3
推荐指数
1
解决办法
2598
查看次数