2

这是场景:我在一个类中生成随机数据并将其用作同一类中方法的参数。如何在另一个类中使用完全相同的值?

这是我的课程的简化版本:

public class A {
    @Test
    public void aMethod() {     
        RandomStringUUID ruuid = new RandomStringUUID();
        }
}

然后:

public class B { 
        @Test
    public void bMethod() {
        // Want to use ruuid , without instantiating RandomStringUUID 
                // as i dont want new values, i want the one from class A
        }
}
4

4 回答 4

4

使用静态方法:

public class A {

     private final static RandomStringUUID ruuid = new RandomStringUUID();

     public final static RandomStringUUID getRuuid() {
         return ruuid;
     }

     @Test
     public void aMethod() {     
         RandomStringUUID ruuid = getRuuid();
     }
}

public class B { 
    @Test
    public void bMethod() {
         RandomStringUUID ruuid = A.getRuuid();
    }
}
于 2012-09-26T13:13:23.570 回答
2

使您的变量成为 A 类中的公共静态变量

public static RandomStringUUID RUUID = new RandomStringUUID();

在被击败后,我进入投票计数

private RandomStringUUID uuid;

private createUuid() {
    uuid = new RandomStringUUID();  //Or any other way you create it
}

public static RandomStringUUID getRuuidForOtherClassesToCheck() {
    return ruuid;
}

没有足够的信息来推断 OP 的设计规则,或者只是一个关于如何从类到类获取变量的简单 JAVA 问题。:D

于 2012-09-26T13:10:15.130 回答
0

要么让 A 给 B 赋值

public class B {  
    @Test 
    public void bMethod(RandomStringUUID ruuid) { 
    // Want to use ruuid , without instantiating RandomStringUUID  
            // as i dont want new values, i want the one from class A 
    } 
} 

或者如@sics 所说,让 A 使其可供 B 访问

于 2012-09-26T13:21:44.380 回答
0

我们有时会测试使用辅助类。这可能是您(测试)案例的解决方案。所以A不会提供值,B但两者都会从第三类获得相同的对象:

public class TestHelper {

  private final static RandomStringUUID UUID = new RandomStringUUID();

  public static RandomStringUUID getDummyRandomStringUUID() {
     return UUID;
  }
}

public class A {
  @Test
  public void aMethod() {     
    RandomStringUUID ruuid = TestHelper.getDummyRandomStringUUID();
  }
}

(与 相同B

测试还是有问题的,因为每次测试运行使用不同的 UUID 值,所以测试是不可重现的。最好定义一个用于每次测试运行的静态 UUID。

于 2012-09-26T13:25:50.600 回答