JavaのassertEquals()は中でequals()メソッドを呼んでいるんですね。たぶん。だから違うオブジェクトを比較しているのに"Equal"と判断されるんですね。Javaでコードを書かないのでよくわかないですが。
それに対しPythonのassertEqual()は中で__eq__()メソッドないし、==演算子を使用しているんだと思います。たぶん。あとでソースコード読んで確認します。
それを踏まえて前回のを書き直してみました。
ただ、__eq__()とequals()が全く同じことをしているっていうはPythonの書き方としてどうなんだろうという気がしますが。
# !/usr/bin/env python # coding : utf-8 """ テスト駆動開発入門 4章 プライベート化 """ import unittest class TestMoney(unittest.TestCase): def testMultiplication(self): five = Dollar(5) self.assertEqual(Dollar(10), five.times(2) ) self.assertEqual(Dollar(15), five.times(3) ) def testEuality(self): self.assert_(Dollar(5).equals(Dollar(5) ) ) self.assert_(not Dollar(5).equals(Dollar(6) ) ) class Dollar(object): __amount = 0 def __init__(self, amount): self.__amount = amount def times(self, multiplier): return Dollar(self.__amount * multiplier) def equals(self, dollar): return self.__amount == dollar.get_amount() def get_amount(self): return self.__amount def __eq__(self, other): return self.__amount == other.get_amount() if __name__ == "__main__": unittest.main()
- 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2003/09
- メディア: 単行本
- 購入: 43人 クリック: 1,002回
- この商品を含むブログ (153件) を見る