並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 23 件 / 23件

新着順 人気順

プライベートメソッドの検索結果1 - 23 件 / 23件

  • プライベートメソッドのテストは書かないもの? - t-wadaのブログ

    この文章の背景 この文章はプライベートメソッドのテストを書くべきか否かに関する knsmr さんのご質問に対して 2013/03/13 に QA@IT で回答したものです。残念ながらQA@IT のサービス終了(2020/02/28)と共にアクセスできなくなってしまったため、運営を行っていたアイティメディア株式会社様、開発を行っていた永和システムマネジメント様、そして質問をされた knsmr さんに許可とご協力をいただき、当時の回答をサルベージしてブログに転載する運びとなりました。 プライベートメソッドのテストはよく議論になるテーマですので、当時の回答を再編集し、knsmr さんのご質問も含め、ご利用いただきやすいライセンス CC BY(クリエイティブ・コモンズ — 表示 4.0 国際 — CC BY 4.0) で公開いたします。 目次 この文章の背景 目次 knsmr さんのご質問 私の回

      プライベートメソッドのテストは書かないもの? - t-wadaのブログ
    • 今日は、チーム9人全員で「プライベートメソッドのユニットテストは書くべきなのか? ディスカッションができた」記念日 - エンジニア的なネタを毎週書くブログ

      今日はとても素敵な一日になりました。 私を含めたチームメンバー9人が、一つの技術的な話題に対して30分話し合う会を開けた日。 何より嬉しかったのは、この会そのものが、メンバー間でのやり取りからほぼ自然に出てきたことなんです。 回想:本当に「スモール」だった時期 私の今のチームは総勢9名のチームなのですが、大まかに分けても4種類くらいののサービス(検索から予約、管理画面も。)を担当している、プロダクト的にはかなりマッチョなチームです。 これらのサービスはどれも「似ている」のですが、歴史的にバラバラに作られてきたため、アーキテクチャやフレームワーク、コードの思想は全部バラバラです。 以前は、このバラバラなプロダクトを、チーム内でもバラバラに担当がついていて、2~3人の少人数チームが3つ、という状態でした。 「似ている」ものをバラバラに作っているので、同じようなものをお互い作っていたり、同じよう

        今日は、チーム9人全員で「プライベートメソッドのユニットテストは書くべきなのか? ディスカッションができた」記念日 - エンジニア的なネタを毎週書くブログ
      • VOYAGE GROUP エンジニアブログ : プライベートメソッドのテストは必要ない!!

        2013年11月12日16:19 カテゴリprogramming プライベートメソッドのテストは必要ない!! こんにちは、RPAの関口です。 最近週に一度、来年の新卒達と一緒にTDDをやりながらワイワイガヤガヤしております。そのなかで「プライベートメソッドのテストはどうすれば良いのか?」 という話題がありました。プライベートメソッドのテストについては プライベートメソッドのユニットテストは書かないもの? がよくまとまっていると思います。プライベートメソッドのテスト方法について考える中で「TDDの手順に従えばプライベートメソッドのテストがしたくなることは無い」のではないか?と思うようになりました。 プライベートメソッドはリファクタリングの結果現れる! 数値の配列を渡すと平均を計算して返してくれる機能を持ったクラス、AverageCalculatorを作りたいとします。平均計算の手順をまとめる

        • Objective-Cで、プライベートメソッド・プロパティにアクセスし、ユニットテストを実行する方法 - プログラマでありたい

          iPhone/iOSの開発をしていく上で、Objective-CでPrivate Methodにアクセスしたいなぁと思うことがあると思います。パブリックメソッドには、外部からのインターフェースのみを実装し、ロジック部分はプライベートメソッドに隠蔽するといったケースは多々あると思います。その場合、ユニットテストはプライベートメソッドに対して行う必要があります。 そもそもObjective-Cでのプライベートメソッドは、どう実装するのでしょうか?実はObjective-Cでは、厳密な意味でのプライベートメソッドは存在しないのです。一般的にはカテゴリーという機能を使って、実装ファイル(.mファイル)に宣言して代用します。次のサンプルのような感じです。 #import "ExampleClass.h" @interface ExampleClass(private) - (void) privat

          • NUnitでプライベートメソッドをテストする:アーキテクト360

            .NETアプリケーションのアーキテクチャやフレームワーク、設計に役立つ情報を中心に紹介しています。また業務システムに役立ちそうなユーティリティやノウハウをサンプルコードつきで公開しています。言語はC#とVB.NETを扱っています。 NUnitでプライベートメソッドをテストするときのサンプルコードをまとめた。パブリックメソッドをテストするときは、本番コードがテスト対象のクラスを呼び出すように呼び出して呼び出せば良い。(例:Addメソッド)プライベートメソッドをテストするには、面倒であるが、下記のコードのようにリフレクションを使って呼び出すしかない。下記サンプルコードは、プライベートなインスタンスメソッドと、プライベートなスタティックメソッドのサンプルコードと、テストコードの例である。Subメソッドは単純な引き算のメソッドであるが、プライベートである。Type.GetMethodを使って、タイ

            • プライベートメソッドに対するテスト方法 - t_komuraの日記

              phpunit などを使って PHP スクリプトをテストする時に、プライベートメソッドをテストしたくなる時があると思いますが、PHP では結構難しいように思います。 PHP でプライベートメソッドをテストする方法として、思い付くのは以下の方法くらいでしょうか。 パブリックメソッドからプライベートメソッドを完全にテストできるように工夫する プライベートメソッドのテスト用にパブリックメソッドのラッパーを作成しておく テスト時のみ、テストしたいプライベートメソッドの Private を Public に書き換える Runkit などを使って定義を変更する 1. が実現できれば問題ないのですが、全てがうまくいくようにパブリックメソッドを作成するのは困難だと思います。また、テストのためだけにメソッドを増やしたり、変更したくないため、2. と 3. はあまりやりたくありません。4. であればできそうな

                プライベートメソッドに対するテスト方法 - t_komuraの日記
              • プライベートメソッド/フィールドに外部から強引にアクセスする方法 : Java Programming Tips

                【概要】 プライベートなメソッドやフィールドに外部から強引にアクセスする方法。カプセル化を破壊するので通常のプログラミングではまず使うべきではないが、ライブラリ利用時にどうしてもある状態をつくり出したい時や、private メソッドに対するテストケースを作成したいときに、テストケースのためだけにメソッドのシグニチャを変更したくないときなどには便利。かなり有名な方法ですが、一応、Java 関連の Tips ということで。 【キーワード】 private、プライベート、method、メソッド、field、フィールド、アクセス、変更、呼び出し、リフレクション、reflection、getDeclaredMethod、getDeclaredField 次の2つの Java ファイルを用意し、プログラムを実行する。 [プログラム: Person.java] public class Person {

                  プライベートメソッド/フィールドに外部から強引にアクセスする方法 : Java Programming Tips
                • プライベートメソッドのテスト

                  なんとなくテストコードはかけるようになった。 でも、公開(パブリック)メソッドだけでなく、 内部実装であるプライベートメソッドの方も直接テストしてみたい。 というわけでやってみよう。 ●プライベートメソッドをテストしたい ちまっとソースを書いてすかさずテストというサイクルをまわすには、 プライベートなメソッドもテストしたくなる。 というか、実際には際どいところはたいていプライベートな内部コードに 存在しているのでその近辺を濃密なテストで取り囲むにはどうしても 直接プライベートなメソッドを呼び出したい。 1つの案としてはプライベートメソッドテスト用にパブリックなコードを 本体側に組み込む手もあるけど、せっかくの「テスト用コードと本体コードを分離できる」という JUnitを使うメリットが失われるし、 テスト実体とテスト用の窓口という形でテストコード自体が分散してしまう。 プライベートをやめ

                  • Objective-Cのテストクラスからプライベートメソッド/プロパティを参照したい | TOKOROM BLOG

                    dkfjさんが Objective-Cで、プライベートメソッド・プロパティにアクセスし、ユニットテストを実行する方法 という記事を書かれていました。 せっかくなので私がやっている方法も書かせていただきます。 テスト対象のクラス 以下のようにプライベートメソッドとプロパティを持ったExampleClassをテストするとします。 #import "ExampleClass.h" @interface ExampleClass() - (BOOL)privateMethod; @property (assign) BOOL flag; @end @implementation ExampleClass - (BOOL)privateMethod { return self.flag; } @end テストクラス 自分の場合は、こんなかんじでテストクラスでテスト対象のプライベートメソッドやプロパテ

                    • プライベートメソッド、テスト駆動開発と優れたデザイン

                      Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                        プライベートメソッド、テスト駆動開発と優れたデザイン
                      • RSpecでprivate(プライベート)メソッドをテストする[Ruby][Rails]

                        # -*- coding: utf-8 -*- class Test def public_method "public/パブリック" end private def private_method "private/プライベート" end end RSpecのテストコード側は次の通りです。 Object#sendメソッド(Objectの持っているメソッドを呼び出す)を使えば、privateメソッドを呼び出せるようです! # -*- coding: utf-8 -*- require_relative 'test' describe Test do before(:each) { @sample = Test.new } context 'publicメソッドを呼び出す場合' do subject { @sample } its(:public_method) { should == "pu

                          RSpecでprivate(プライベート)メソッドをテストする[Ruby][Rails]
                        • JUitでプライベートメソッドをテストする - とある誰かの覚え書き

                          JUnitでprivateメソッドをテストする方法について。 やり方はいろいろあると思いますが、個人的にはこれが一番簡単だと思います。 まずはテスト対象のクラスです。runメソッドがprivateになっているので、普通にアクセスしてもテストできません。 PrivateClass.java package jp; public class PrivateClass { private void run () throws Exception { throw new RuntimeException(); } } そこで次のクラスのように、リフレクションを使ってテストを行います。 PrivateClassTest.java package jp; import java.lang.reflect.Method; import junit.framework.TestCase; import o

                            JUitでプライベートメソッドをテストする - とある誰かの覚え書き
                          • Objective-Cのプライベートメソッド - Perl日誌

                            @privateが使えるのはメンバ変数(インスタンス変数)のみ プライベートなインスタンス変数は次のように宣言する事ができます。 //MyClass.h @interface MyClass : NSObject { @private id myInstanceVariable_; } // public methods - (id)myInstanceVariable; - (void)setMyInstanceVariable:(id)theVar; @end ですが、privateなメソッドを記述する場合、.hファイルではなく.mファイルへ以下のように記述をします。 //MyClass.m @interface MyClass() -(void) privateMethod; @end @implemention MyClass // ここからヘッダーファイルに記述されている処理を実

                            • prototype.jsでプライベートメソッドを持つクラスを作る方法: ある SE のつぶやき

                              Private Members in JavaScript [翻訳]JavaScriptにおけるプライベートメンバ(COLLECTION & COPY) 上記の記事に刺激を受けて、prototype.jsでプライベートメソッドを持つクラスを作る方法を考えてみました。 JavaScriptのクロージャを利用してますが、具体的には次のようになります。 1: //Animalクラス作成 2: var Animal = Class.create(); 3:   4: //Animalクラスフィールド設定 5: Animal.MALE = 0; 6: Animal.FEMALE = 1; 7: Animal.SEXTYPE = ['Male','Female']; 8:   9: //Animalクラス設定 10: Animal.prototype = { 11: initialize : func

                              • プライベートメソッドをテストすべきか

                                「すべきでない」というのがたぶん多数派。テストすべきでない理由としてだいたい次の理由があげられる。 プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。 プライベートメソッドのテストは書かないもの? - t-wadaのブログ ほとんどの場合、プライベート メソッドをテストする必要はありません。 プライベート メソッドは実装の詳細です。 プライベート メソッドがある場合は、パブリック メソッドを見つけて、そのメソッドに対してテストを記述します。 単体テストを記述するためのベスト プラクティス - .NET | Microsoft Docs 「プライベートメソッドはテストするな」と強く主張されるのは、ケント・ベックの影響もあるかもしれ

                                  プライベートメソッドをテストすべきか
                                • MSTestでプライベートメソッドのテストを行う(自力) - なか日記

                                  2013-04-04 MSTestでプライベートメソッドのテストを行う(自力) C# 昔はNUnitを使っていたのですが、TFSとの連携もし易いしMSTestでいいんじゃない?って気がして専らMSTestを使ってる今日この頃。 プライベートメソッドのテストも右クリックメニューから・・・って思ったんだけどなんかそれっぽいのがないではないか! プライベートメソッドのテストはそれを利用するパブリックメソッドを通してテストすべきなんて話を聞いたこともあるけど、どうしてもプライベートメソッドのテストが書きたいんだい!ってインターネッツを徘徊してたら、こんなクラスがあることを知ったなり。 PrivateObject クラス (Microsoft.VisualStudio.TestTools.UnitTesting) ほうほう。VisualStudio2012からはこんな便利なクラスが・・・と思ったら、

                                  • Google先生も知らないJXAのプライベートメソッド - Qiita

                                    ドキュメント・用語説明に書いてない、ググってもどこにもない ネット上でここにしか存在しないプライベートメソッドの使用方法を含むメモ (少なくともググる限り) 役に立つのか? 知りません。 プロパティ名やコマンド名を取得するメソッドがあるので、用語説明を見る機会を減らせるかもしれません。 注意 この記事は自分で試しつつ手探りで調べた内容ばかりです。 まだ分かっていない部分も多いですが、公開したら誰かが調べてくれるかなと期待して書きました。 誤情報や嘘も多く含まれてると思うので、ガンガン指摘してほしいです。 ObjectSpecifierクラスについて Application("Finder")とかで得られる。 アプリケーションやその部品等の参照を表す。 JavaScript for Automation Release Notes#ObjectSpecifier ObjectSpecifie

                                      Google先生も知らないJXAのプライベートメソッド - Qiita
                                    • 【Java】プライベートメソッドをテストする方法【リフレクション】 - myhd

                                      単体テストを書くとき、よく問題となるのがPrivateメソッドの扱いです。PublicメソッドだけでなくPrivateメソッドまでテストする場合、大まかに分けて2つのやり方があります。 プロダクトコードを書き換えてテストする プロダクトコードは書き換えずにテストの仕方を工夫する プロダクトコードとは、(テストコードに対して)本体のコードのことで、それを書き換えるというのは、単純にprivateをpublicに書き換えるということです。簡単ですが、ソースの管理をきちんとしないと、プロダクトコードやテストの信頼性が損なわれます。 それに対して、テストの仕方を工夫するやり方では、プロダクトコードは変更しません。その代わり、テストコードでリフレクションという技術を使います。 リフレクション (reflection) とは、プログラムの実行過程でプログラム自身の構造を読み取ったり書き換えたりする技術

                                        【Java】プライベートメソッドをテストする方法【リフレクション】 - myhd
                                      • プライベートメソッドのテスト - Qiita

                                        個人的に、あまり細かすぎる単位でテストを書くのはお勧めしませんが、 時にはプライベートメソッドのテストが書きたい時もあります。 しかし、ヘッダファイルに宣言していないプライベートメソッドは、 そのままではテストクラスから参照することが出来ません。 例えば以下のようなクラスについて #import "PrivateClass.h" @interface PrivateClass () @end @implementation PrivateClass /** Private Method */ - (BOOL)privateMethod:(BOOL)flag { return flag; // 例なので適当です } @end このprivateMethodをテストクラスから呼び出すためには、 テストファイルの方にPrivateClassのCategoryを書き、 privateMethodを

                                          プライベートメソッドのテスト - Qiita
                                        • Ruby 1.9でもsendでプライベートメソッドを呼ぶことができる - http://rubikitch.com/に移転しました

                                          privateメソッドをレシーバを指定して呼ぶ方法 - LukeSilvia’s diary テスト等ではsendを使うのがお手軽でよさそうです。ちなみに、1.9では、sendメソッドでも privateメソッドにはアクセスすることはできず、代わりに「__send__」メソッドを使います。 んにゃ、sendでも__send__でも呼べるのだが。Ruby 1.9.0でも最新版でもRuby 1.8でも同じ。 sendはかぶる可能性があるので__send__が無難。 class X def hoge :private end private :hoge end RUBY_VERSION # => "1.9.0" RUBY_RELEASE_DATE # => "2008-05-25" x = X.new x.__send__ :hoge # => :private x.send :hoge # =

                                            Ruby 1.9でもsendでプライベートメソッドを呼ぶことができる - http://rubikitch.com/に移転しました
                                          • Perlモジュールでプライベートメソッドを作る - ろば電子が詰まつてゐる

                                            Perlのオブジェクト指向はかなり後付けでムリヤリ感があるんだけど、privateメソッドをモジュールに作りたいなと思った場合にどうするか。というのを調べてみた。 概要 以下、ある秘密値を取得するメソッドを隠蔽したいケースを考える。実はこのメソッドは、中で単にrand(10)しているだけなのだが、何か妙な理由があって、どうしても外部から直接はアクセスできないようにしたいこととする。 例1)アンダースコアで始まる名前にする Perlでは暗黙の了解として、あるモジュール内の関数名がアンダースコアで始まっていれば、それは「Privateメソッドだから外から使おうとするんじゃねぇ」という意思表示である。 ということで、アンダースコアで始まるサブルーチン名で作っておけばよい。 sub _get_secret { return int(rand(10)); } シークレットを取得する関数だ、外から使う

                                              Perlモジュールでプライベートメソッドを作る - ろば電子が詰まつてゐる
                                            • trait内のクロージャからプライベートメソッドが見えない - GeekFactory

                                              Groovy 2.3から導入されたtraitを使っていて、妙な事象に遭遇したのでまとめてみます。具体的には、traitの中でクロージャを使う場合に、クロージャからプライベートメソッドが見えない仕様があるようです。 例えば、下記のような trait T があるとします。 trait T { private a(x) { "--$x--" } // プライベートメソッドを直接呼んでいる def b(x) { a(x) } // クロージャの中からプライベートメソッドを呼んでいる def c(xs) { xs.collect { x -> a(x) } } } 下記のように、この trait を適用した class P および class Q を定義します。 // implementsでtraitを適用する class P implements T {} // withTraitsでtraitを

                                                trait内のクロージャからプライベートメソッドが見えない - GeekFactory
                                              • Ruby 2.7 の変更点 - self でのプライベートメソッド呼び出し - tmtms のメモ

                                                Ruby 2.7 アドベントカレンダーの8日目の記事です。 qiita.com self でのプライベートメソッド呼び出し プライベートメソッドは、obj.hoge の形式で呼び出そうとしたら普通はエラーになるのですが、self.hoge の場合はエラーにならなくなりました。 class A def foo self.hoge # 2.6 では private method `hoge' called for #<A:0x000055f92ca59738> (NoMethodError) end private def hoge end end A.new.foo なお、次のように self を一旦変数に代入してから使用した場合は今までと同じエラーになります。 obj = self obj.hoge #=> private method `hoge' called for #<A:0x00

                                                  Ruby 2.7 の変更点 - self でのプライベートメソッド呼び出し - tmtms のメモ
                                                1