我的班级中有一个public class ArchiverData
{
/** The pricing API records */
private ConcurrentLinkedQueue<ArchiverApiResponseDTO> pricingQueue =
new ConcurrentLinkedQueue<ArchiverApiResponseDTO>();
[...]
public int getApiResponseCount()
{
return pricingQueue.size();
}
public void addApiResponseDTO(ArchiverApiResponseDTO dto)
{
pricingQueue.add(dto);
}
public ArchiverApiResponseDTO pollApiResponseDTO()
{
return pricingQueue.poll();
}
[...]
}
字段,当我在Eclipse中使用JUnit运行简单的monothread测试时,我的行为非常不稳定。
我的课程:
public class ArchiverDataTest {
@Test
public void test() {
ArchiverData archiverData = new ArchiverData();
ArchiverApiResponseDTO dto = new ArchiverApiResponseDTO([...]);
archiverData.addApiResponseDTO(dto);
archiverData.addApiResponseDTO(dto);
System.out.println(":" + archiverData.getApiResponseCount());
}
}
我的测试:
ArchiverApiResponseDTO
如您所见,测试用例中没有其他任何内容。 :2
对象是一组简单的字段。
我的结果:
:0
(很好)archiverData.pricingQueue
和addApiResponseDTO
对象看起来总是空的archiverData.pricingQueue
来电时的断点::1
为空;然后运行:sysout
archiverData.pricingQueue
上的断点::0
为空,然后运行::2
重要的是要注意一位同事每次都尝试相同并得到正确的结果(Python 2 & Python 3
)!我没有在同一时间跑步。在给定时间的情况下,似乎某些东西正在排空我的队列。究竟发生了什么?
答案 0 :(得分:0)
我现在最好的猜测是你在pollApiResponseDTO()或poll()上有一个监视器,它实际上是你的调试器清空队列。