标签: roboguice

如果在任何模块中存在模拟实例,则在创建RoboGuice注入器期间进程崩溃

我在单元测试中使用RoboGuice和AndroidMock框架时遇到问题.我已经创建了一个简单的项目来显示我的问题.在这里,我创建一个模拟实例并在RoboGuice中注册它.但是该过程在"setUp()"和"test01()"方法之间崩溃.正如我猜的那样,实际上当创建Injector时进程崩溃,如果任何模块内部有一个模拟实例.

如果我用实现接口的类的实例替换模拟的实例,那么一切正常.

有人知道如何解决这个问题吗?

这是我的测试代码:

public class testInjectMock extends RoboUnitTestCase<MyApplication> {
    protected void setUp() throws Exception {
        InterfaceToMock instance = AndroidMock.createNiceMock(InterfaceToMock.class);           AndroidMock.expect(instance.SimpleMethod()).andStubReturn("Hello!");            
        MyModule myMockModule = new MyModule();
        myMockModule.setMockedInstance(instance);//Comment this string to get into the test01() method          
        MyApplication.setMyModule(myMockModule);
        super.setUp();
    }
    public void test01() {
        //It never comes here
    }
}
Run Code Online (Sandbox Code Playgroud)

模块源代码:

public class MyModule extends AbstractAndroidModule {
        protected InterfaceToMock mockedInstance;
        public void setMockedInstance(InterfaceToMock mockedInstance) {
            this.mockedInstance = mockedInstance;
        }
        @Override
        protected void configure() {
            if(mockedInstance != null)
                bind(InterfaceToMock.class).toInstance(mockedInstance);
        }
    }
Run Code Online (Sandbox Code Playgroud)

logcat输出:

05-23 …
Run Code Online (Sandbox Code Playgroud)

java eclipse android roboguice

85
推荐指数
1
解决办法
2367
查看次数

使用Robolectric + Roboguice时写入的日志输出在哪里?

我正在使用Robolectric来测试Android.我正在通过maven运行我的测试,例如

mvn -Dtest=LogTest test
Run Code Online (Sandbox Code Playgroud)

如果我有代码写入日志,例如

Log.d("TAG", "blah");
Run Code Online (Sandbox Code Playgroud)

或者使用Roboguice的 Ln

Ln.d("blah");
Run Code Online (Sandbox Code Playgroud)

我没有在maven的surefire日志(文本文件)中看到任何输出.

理想情况下,我实际上想要简单的日志语句转到控制台.我可以使用写入控制台System.out.println("blah"),但当然我宁愿使用支持的日志API.

所以我的问题是,为什么我根本看不到日志输出,如何将日志消息写入控制台?

java android maven-2 roboguice robolectric

46
推荐指数
4
解决办法
1万
查看次数

使用依赖注入与Roboguice?

我正在开发一个Android项目,我想知道关于什么是构建Android应用程序的好架构的任何建议.

我想使用Roboguice使用依赖注入,我一直在阅读MVVM模式或MVC模式(Android MVVM设计模式示例).

另外我知道roboguice有一个非常酷的基于上下文的事件的提升和处理功能,可以在代码解耦时非常可测试.

关于工作设计模式的任何建议?您已经合作或开发过的可测试且可扩展的架构?

architecture tdd android design-patterns roboguice

42
推荐指数
1
解决办法
2万
查看次数

在Proguard中保留注释课程

我有很多类使用像@Singleton这样的注释

@Singleton
public class ImageCache
Run Code Online (Sandbox Code Playgroud)

我想保留.如何配置proguard -keep语句,使其适用于具有该注释的所有类.

顺便说一下上下文我在Android上使用Roboguice的应用需要这个,这就是我添加标签的原因.可能会帮助别人.

android proguard roboguice

26
推荐指数
2
解决办法
1万
查看次数

使用Guice for Android是否有意义

我在一个非常复杂且具有很多业务逻辑的android项目中使用guice进行辩论.Guice似乎很合适,但每当我开始深入阅读它时,它开始看起来比它需要的更复杂.

我不明白的一件事是:如果Guice是如此伟大并且是编写java代码的最佳方式,那么为什么使用Guice的Android代码如此之少......为什么Google没有在内部使用guice来安装Android?

android guice roboguice

23
推荐指数
4
解决办法
1万
查看次数

在Android上使用DI的具体好处是什么?

使用Android依赖注入框架的具体优势或优势是什么,如Dagger,TransfuseRoboGuice

例如,什么样的应用程序从使用DI中受益最多?是否有更多的性能优势,或者更多的是扩展应用程序的简易性,还是更多关于使其可测试?

问这个问题的原因之一是衡量我正在开发的应用程序是否真的会从中受益或不多.由于我打算在某些方面认真对待应用程序,可测试性和易于扩展性将是很好的,即使第一版本使用成本高(更多时间设置,学习曲线等).

谢谢!

android dependency-injection roboguice dagger transfuse

21
推荐指数
1
解决办法
7080
查看次数

Android和RoboGuice - 在Fragment上注入视图?

我有一个片段,我需要在屏幕上显示.我希望能够InjectView用来注入我的UI元素.InjectView在活动中工作正常,因为视图(xml)是在设置期间设置的onCreate,但是在片段上设置了视图onCreatView.

那么有没有办法在片段上使用InjectView?我知道我可以使用findViewbyId来查找每个元素,但我更喜欢使用InjectView

public class ProfileFragment extends RoboDialogFragment {

    @InjectView(R.id.commentEditText)
    protected EditText commentEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

            // I get a  null pointer exception here
            commentEditText.setText("Some comment");

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.profile , container, false);

            // I get a  null pointer exception here
        commentEditText.setText("Some comment");

        return view;
    }

}
Run Code Online (Sandbox Code Playgroud)

android inject fragment roboguice

15
推荐指数
1
解决办法
8183
查看次数

java.io.FileNotFoundException:com/google/inject/internal/util/$在Android应用程序启动时的Finalizer.class

我正在开发和Android倒计时应用程序.

在应用程序中,您可以根据需要添加或删除多个倒计时.

所有倒计时都保存在ArrayList中.我不能将它们保存在数据库或共享首选项中,因为即使您离开应用程序,倒计时也必须继续运行.

我正在使用roboguice 2.0和guice-3.0-no_aop.jar来处理我的依赖注入.

大多数时候everthing工作正常,但有时如果我启动应用程序我只得到以下警告和所有变量,如我保存倒计时的Arraylist再次是空的.

05-21 13:07:33.260: W/nalizableReferenceQueue(14417): Could not load Finalizer in its own class loader. Loading Finalizer in the current class loader instead. As a result, you will not be able to garbage collect this class loader. To support reclaiming this class loader, either resolve the underlying issue, or move Google Collections to your system class path.
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): java.io.FileNotFoundException: com/google/inject/internal/util/$Finalizer.class
05-21 13:07:33.260: W/nalizableReferenceQueue(14417):   at com.google.inject.internal.util.$FinalizableReferenceQueue$DecoupledLoader.getBaseUrl(FinalizableReferenceQueue.java:269)
05-21 13:07:33.260: W/nalizableReferenceQueue(14417):   at com.google.inject.internal.util.$FinalizableReferenceQueue$DecoupledLoader.loadFinalizer(FinalizableReferenceQueue.java:253)
05-21 13:07:33.260: W/nalizableReferenceQueue(14417):   at com.google.inject.internal.util.$FinalizableReferenceQueue.loadFinalizer(FinalizableReferenceQueue.java:175) …
Run Code Online (Sandbox Code Playgroud)

android roboguice

15
推荐指数
2
解决办法
6234
查看次数

在android中使用roboguice和片段的任何简单例子?

我在找到使用片段+ RoboGuice的工作示例时遇到了问题.当您尝试使用Android片段事务管理器添加/删除片段时,会发生此问题.一旦告诉片段继承自RoboFragment,事务管理器就不再认为该类是片段(因为它扩展了RoboFragment).但是,您可以使用RoboGuice自己的片段管理器,但它也会崩溃.有没有动态添加/删除RoboGuice片段的例子?

android fragment roboguice

14
推荐指数
2
解决办法
8601
查看次数

使用Guice将依赖项注入Android活动的构造函数

有没有人知道如何使用Guice将依赖项注入到Android中的Activity的构造函数中?看起来活动通常只有默认构造函数,以便平台可以轻松创建新实例.虽然很容易有一个单例来引用注入器并以这种方式获得依赖关系,但它不那么干净并且引入了一些静态状态.

有什么建议?

android guice roboguice

13
推荐指数
1
解决办法
6370
查看次数