当前位置: 首页 > 面试题库 >

如何对使用Java UUID的测试代码进行单元化?

慎峻
2023-03-14
问题内容

我有一段代码,期望用Java UUID(UUID.randomUUID())填充响应对象的一个​​属性。

如何从外部对代码进行单元测试以检查此行为?我不知道会在其中生成UUID。

需要测试的示例代码:

// To test whether x attribute was set using an UUID
// instead of hardcode value in the response
class A {
  String x;
  String y;
}

// Method to test
public A doSomething() {
  // Does something
  A a = new A();
  a.setX( UUID.randomUUID());
  return a;
}

问题答案:

Powermock和静态模拟是前进的道路。您将需要以下内容:

    ...
    import static org.junit.Assert.assertEquals;
    import static org.powermock.api.mockito.PowerMockito.mockStatic;
    ...

    @PrepareForTest({ UUID.class })
    @RunWith(PowerMockRunner.class)
    public class ATest
    {
    ...
      //at some point in your test case you need to create a static mock
      mockStatic(UUID.class);
      when(UUID.randomUUID()).thenReturn("your-UUID");
    ...
    }

请注意,可以在带有@Before注释的方法中实现静态模拟,因此可以在需要UUID的所有测试用例中重新使用该静态模拟,以避免代码重复。

初始化静态模拟之后,可以在测试方法中的某个位置声明UUID的值,如下所示:

A a = doSomething();
assertEquals("your-UUID", a.getX());


 类似资料:
  • 问题内容: 我是Java和junit的新手。我有以下要测试的代码。如果您能提出有关测试它的最佳方法的想法,将不胜感激。 基本上,以下代码与从集群中选出领导者有关。领导者在共享缓存上持有锁,并且如果领导者以某种方式释放了对缓存的锁定,则领导者的服务将恢复并处置。 我如何确保领导者/线程仍保持对缓存的锁定,并且在执行第一个线程时另一个线程无法恢复其服务? 问题答案: 作为测试框架的替代方法(或使用JU

  • 问题内容: 我想问一下您首选的Java EE代码测试方法? 我发现只有三个项目,这些项目试图帮助在Java EE环境中编写单元测试: http://jakarta.apache.org/cactus/:上次发布时间:2009-01-18 http://www.junitee.org/:最新版本:2004-12-11 http://ejb3unit.sourceforge.net/:最新版本:200

  • 我正在尝试使用yii2 codeception。我有一个名为Client的类,它扩展了ActiveRecord。 规则()函数: 我在tests\codeception\unit\models文件夹中创建了一个名为ClientTest的文件,该文件包含以下内容: 当我使用“codecept run unit--debug”命令运行测试时,我看到

  • 问题内容: 到目前为止,我似乎避免了测试多线程代码的噩梦,因为它似乎太多了。我想问一下人们如何去测试依赖于线程的代码才能成功执行,或者人们如何去测试那些仅在两个线程以给定方式交互时才会出现的问题? 对于当今的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这一恕我直言上将很有用。 问题答案: 看,没有简单的方法可以做到这一点。我正在开发一个本质上是多线程的项目。事件来自操作系统,我必须同

  • 问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:

  • 问题内容: 我目前正在编写Java客户端服务器应用程序。所以我想实现两个库,一个用于客户端,一个用于服务器。客户端服务器通信具有非常严格的协议,我不打算使用JUnit进行测试。 作为构建工具,我使用Maven和Husdon Server进行持续集成。 实际上,我对如何测试这些客户端/服务器库没有什么好主意。 我得到以下方法: 只需编写一个虚拟客户端来测试服务器,然后编写一个虚拟服务器来测试客户端。