有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何检查在单元测试上下文中执行的方法?

我正在尝试向遗留库添加一些特性,并计划使其可测试

我想限制一些在测试上下文中允许调用的方法,比如更改全局系统配置。由于某些更改对生产是危险的,因此限制可访问性非常重要

我使用junit4测试我的项目,有什么建议吗

class Foo {
    public void methodA() {
        // is it possible limit methodA only allowed invoked by JUNIT ?
    }
}

共 (3) 个答案

  1. # 1 楼答案

    我会做一个存根

        Lib l = new Lib() {
            @Override
            void xxx() {
                Assert.fail("calling xxx() is not allowed");
            }
        };
    
  2. # 2 楼答案

    您可以将方法包设置为私有,并将测试放在同一个包中

    public class Foo{
    
        public void publicMethod();
    
        void forTestingOnly();
    
    }
    
  3. # 3 楼答案

    我想到的是使用依赖注入来使用同一接口的两个不同实现,一个用于生产,一个用于测试。在生产执行中注入的方法可能只有空方法,而实际上什么都不做。概念:

    class Foo {
    
        private Bar bar;
    
        public Foo() {
    
            bar = new DefultBarImplementation();
        }
    
    
        public setBar(Bar bar) {
    
            this.bar = bar;
        }
    
        //use bar in your other methods
    }
    

    在你的测试中

    Foo foo = new Foo();
    foo.setBar(new TestBarImplementation());