java—如何仅在测试运行时忽略类或方法

java—如何仅在测试运行时忽略类或方法,java,android,robolectric,Java,Android,Robolectric,我正在寻找一种在测试运行时忽略静态方法调用的方法 我的测试跑步者是机器人。我有一些在测试执行时不想执行的方法。有什么注释或技巧我可以使用吗 我需要忽略的实用程序类如下所示: public class FabicTrackerUtils { private static void trackLoginActivity(LoginEvent loginEvent) { //... Answers.getInstance().logLogin(loginEve

我正在寻找一种在测试运行时忽略静态方法调用的方法

我的测试跑步者是机器人。我有一些在测试执行时不想执行的方法。有什么注释或技巧我可以使用吗

我需要忽略的实用程序类如下所示:

public class FabicTrackerUtils {

    private static void trackLoginActivity(LoginEvent loginEvent) {
        //...
        Answers.getInstance().logLogin(loginEvent);
    }

    private static void trackPaymentsActivity(PaymentEvent paymentEvent) {
        //...
        Answers.getInstance().logLogin(paymentEvent);
    }
}

我希望避免使用测试条件,例如if!RobolectrictTest对我的生产代码的方法进行了全面测试

要详细说明@Louis的评论,您应该使用依赖项注入,例如,使用如下方法签名:

private static void trackLoginActivity(LoginEvent loginEvent, Answers answers) {
    //...
    answers.logLogin(loginEvent);
}
另一种选择是,由于Answers实例看起来像一个单例,因此将对象作为实例变量注入,例如:

public class FabicTrackerUtils {
    private Answers answers;

    public FabicTrackerUtils(Answers answers) {
        this.answers = answers;
    }

    private static void trackLoginActivity(LoginEvent loginEvent) {
        //...
        answers.logLogin(loginEvent);
    }
}
这是假设测试可以实例化FabiTrackRutils并通过模拟答案实例。如果这是不可能的,您应该向FabiTrackRutils添加一个访问器方法:


要详细说明@Louis的评论,您应该使用依赖项注入,例如,使用如下方法签名:

private static void trackLoginActivity(LoginEvent loginEvent, Answers answers) {
    //...
    answers.logLogin(loginEvent);
}
另一种选择是,由于Answers实例看起来像一个单例,因此将对象作为实例变量注入,例如:

public class FabicTrackerUtils {
    private Answers answers;

    public FabicTrackerUtils(Answers answers) {
        this.answers = answers;
    }

    private static void trackLoginActivity(LoginEvent loginEvent) {
        //...
        answers.logLogin(loginEvent);
    }
}
这是假设测试可以实例化FabiTrackRutils并通过模拟答案实例。如果这是不可能的,您应该向FabiTrackRutils添加一个访问器方法:


这给我的建议是,你应该在测试中注入一个没有日志记录的假答案实例,而不是一个静态答案。getInstance。这给我的建议是,你应该在测试中注入一个没有日志记录的假答案实例,而不是一个静态答案。getInstance.great answer。这种联系巩固了它。回答得很好。这种联系巩固了它。