The problem is actually a race between the FireThread and the main thread. In Drools 6, the rule is evaluated and enabled when "fire" kicks in for the first time. The rule is then scheduled +3s later as soon as the time advances. In your case, when you advance the pseudo clock. 
However, it may be the case that the main thread will advance the clock BEFORE the Fire Thread has activated the rule. If so, the rule will be considered the NEXT time you advance (again) the time. To make this test work, you'll have to make sure that the FireThread is awakened at least once before you move the pseudo clock.