有 Java 编程相关的问题?

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

java单元测试同步

考虑以下方法:

/**
 * Set whether messages are printed to System.out.     * 
 * @param printOutput True to print, false for silent logging
 */
public void setPrintOutput(boolean printOutput) {
   // Synchronize to messages because this field is used when a message is received
   synchronized (messages) {
      this.printOutput = printOutput;
   }
}

此方法是涉及messages的一组方法的一部分,因此我想编写一个测试,检查此方法是否在messages上同步。有人知道我会怎么做吗


共 (2) 个答案

  1. # 1 楼答案

    我认为这超出了单元测试的范围,因为同步的整个要点是在两段遥远的代码之间提供某种类型的连接

    您可以使用messages为null和非null来测试它的行为方式,这将为您提供完整的覆盖范围。它不会说明同步在语义上是否正确

  2. # 2 楼答案

    如果您真的想对它进行单元测试,那么将message暴露给测试代码,在一个线程中获取它的锁,并检查您是否无法从另一个线程获得它(超时防止死锁)。正如@biziclop所注意到的,您不应该对此进行测试。您可以测量吞吐量和响应性,但测试是否使用了某些特定的内在锁太详细了