kerorokun 发表于 2011-8-7 17:11

java入门编程向求助


    /**
     * check the player is alive.
     *
     * @return     if player is dead, return false. Else alive.
     */
    public boolean isAlive(){
        
        
        if(kill())
        {
            return false;
        } else{
        
            return true;
        }
    }
    
    /**
     * check the player is dead.
     *
     * @return     true.
     */
    public boolean kill(){
        
        
        return true;
    }


unit test:

    public void testIsAlive()
    {
        assertTrue(player.isAlive());
    }
    
    public void testKill()
    {
        player.kill();
        assertFalse(player.isAlive());
    }    


test后testIsAlive不能通过啊。。。这什么情况啊
逻辑上感觉没问题啊

holywind 发表于 2011-8-7 17:17

isAlive会先执行kill(),
kill() return true;
当然isAlive return false;
你assertTrue当然通不过 因为player.isAlive()会一直是false

kerorokun 发表于 2011-8-7 18:03



private boolean alive = true;
    /**
   * check the player is alive.
   *
   * @return   if player is dead, return false. Else alive.
   */
    public boolean isAlive(){
      
      return alive;
    }
   
    /**
   * check the player is dead.
   *
   *
   */
    public void kill(){
      
      alive = false;
    }


这样虽然通过了,但这样真的可以吗?

holywind 发表于 2011-8-7 20:58

kill弄成kill(Player player)
通过player的setAlive方法把他弄死
然后用player.isAlive检验
页: [1]
查看完整版本: java入门编程向求助