[過去ログ]
Rust part16 (1002レス)
Rust part16 http://mevius.5ch.net/test/read.cgi/tech/1656285423/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
814: デフォルトの名無しさん [sage] 2022/09/25(日) 20:37:27.14 ID:lhW/fB5K そういうのは呼び出し側の単体でええんちゃうの http://mevius.5ch.net/test/read.cgi/tech/1656285423/814
815: デフォルトの名無しさん [sage] 2022/09/25(日) 21:09:49.29 ID:j1+dHWho >>807 歴史があり、曖昧さが残るフォーマットの再実装はできればやりたくない仕事だな。 対応する仕様を現代で最低限必要なものを取捨選択して決め打ちで実装しつつ、考慮漏れでクリティカルなものは取り入れていく方式でやるしかないよ。 歴史あるフォーマットの曖昧な対応を追体験する作業は、不毛だからできれば既存実装におまかせすべき。 http://mevius.5ch.net/test/read.cgi/tech/1656285423/815
816: デフォルトの名無しさん [sage] 2022/09/25(日) 21:31:04.61 ID:Td47G6We >>814 中間コンポーネントの単体テストって普通どうやるんだろ 後段のコンポーネントを切り離してテストするのか?繋げたままテストするのか? 切り離せるようにするとその部分にバグが入り込む余地が生まれるし >>815 歴史が長いと仕様上○○であるがこれに準拠しないアプリやデータが少なからず存在するため △△のような実装がベターだみたいなのが沢山あるからねぇ そしてこの手の情報はググっても網羅するのが難しい http://mevius.5ch.net/test/read.cgi/tech/1656285423/816
817: デフォルトの名無しさん [sage] 2022/09/25(日) 21:51:09.44 ID:6lgwXJxi >>811 Linux側にメリットがないと言ってる? http://mevius.5ch.net/test/read.cgi/tech/1656285423/817
818: デフォルトの名無しさん [sage] 2022/09/25(日) 21:51:47.84 ID:PDKGWlWe >>816 > 中間コンポーネントの単体テストって普通どうやるんだろ 中間の意味がよく分からんけど>>813みたいな話なら関数A、関数A'をモックにしてテストする たいていのテストツールではモックの呼び出し回数のテストができる http://mevius.5ch.net/test/read.cgi/tech/1656285423/818
819: デフォルトの名無しさん [sage] 2022/09/25(日) 21:53:52.45 ID:j1+dHWho >>816 JavaみたいにDIが発展しているタイプの言語だと中間コンポーネントが呼び出すコンポーネントはモックをインジェクトしてやって、適切なメソッドが呼び出されたかのテストとかよく書くね。 けど、正直Rustを含む他の言語で中間のレイヤだけ独立してテスト書くようなこだわりはあまり見たことも書いたこともないなぁ。 モジュール設計の考え方が変わるからかな? http://mevius.5ch.net/test/read.cgi/tech/1656285423/819
820: デフォルトの名無しさん [sage] 2022/09/25(日) 22:41:02.05 ID:Td47G6We 今作っているのだとこんな感じかな? 関数C(データの前処理、処理単位への分割) ↓ 関数B(処理全体の制御)→関数A'(処理1-2) ↓ 関数A(処理1-1) >>818,819 その場合モックへ切り替える機構はどうするんだろ そのためにコードを書き換えていてはミスが入り込む可能性が高くなるし、条件付きコンパイルも同様のリスクがある てかThe Rustのテストの所を見ても関数の呼び出し状況をテストする方法とかは書いていないんだよな なんかその辺を良い感じに可視化してくれるツールとかあるんだろうか http://mevius.5ch.net/test/read.cgi/tech/1656285423/820
821: デフォルトの名無しさん [sage] 2022/09/26(月) 00:07:36.94 ID:h/WE7ZWH >>820 すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね http://mevius.5ch.net/test/read.cgi/tech/1656285423/821
822: デフォルトの名無しさん [sage] 2022/09/26(月) 00:33:03.55 ID:TCGzsvbI mockall使うとか http://mevius.5ch.net/test/read.cgi/tech/1656285423/822
823: デフォルトの名無しさん [sage] 2022/09/26(月) 06:28:19.26 ID:p/pWEmYs cargo testで関数テスト、モジュールテスト、モジュール間テストなどあらゆるテストをやっているけどダメなの? http://mevius.5ch.net/test/read.cgi/tech/1656285423/823
824: デフォルトの名無しさん [sage] 2022/09/26(月) 06:47:39.41 ID:h/WE7ZWH >>823 >>820 > その場合モックへ切り替える機構はどうするんだろ に答えてやってくれ http://mevius.5ch.net/test/read.cgi/tech/1656285423/824
825: デフォルトの名無しさん [sage] 2022/09/26(月) 19:21:24.42 ID:kI3cAlPQ モックやスタブは別モジュール化しておいて mod tests内では本物モジュールをuseする代わりにそれをuseするだけじゃないの? http://mevius.5ch.net/test/read.cgi/tech/1656285423/825
826: デフォルトの名無しさん [sage] 2022/09/26(月) 19:31:47.69 ID:V9yeC/LF あと#[cfg(test)]でそれをuse そして#[cfg(not(test))]で本物use http://mevius.5ch.net/test/read.cgi/tech/1656285423/826
827: デフォルトの名無しさん [sage] 2022/09/26(月) 19:31:51.25 ID:i/jndsoD 他の言語でもユーティリティを使わずに、DIやモックを自分でやったことがないんだろうな 説明が面倒だ http://mevius.5ch.net/test/read.cgi/tech/1656285423/827
828: デフォルトの名無しさん [sage] 2022/09/26(月) 19:38:20.09 ID:V9yeC/LF >>827 テスト以外の開発の話でも フレームワークに依存してやってる人は 単純なこと含めて本質的なことを理解してない人が多く フレームワークなしでは何も分からず何も出来なくなってしまう例を時々見かける http://mevius.5ch.net/test/read.cgi/tech/1656285423/828
829: デフォルトの名無しさん [sage] 2022/09/26(月) 21:10:39.16 ID:qW/k82Qg cfg使えば良いじゃないって人は#ifまみれで一見しただけじゃ 何がどう動くんだか判らないCのコードを正当化するつもりなのだろうか Rustは人間が注意すれば問題ないみたいな考えはレガシーで時代遅れだ という思想の言語だと思っているんだが違うのかな http://mevius.5ch.net/test/read.cgi/tech/1656285423/829
830: デフォルトの名無しさん [sage] 2022/09/26(月) 21:41:35.64 ID:w5YNQb64 >>829 #ifは使わないし cfg(test)はテスト分離のため必須でしょ どんな環境でも魔法は無いよ http://mevius.5ch.net/test/read.cgi/tech/1656285423/830
831: デフォルトの名無しさん [sage] 2022/09/26(月) 23:33:07.51 ID:h/WE7ZWH >>829 cfg使わないで済むいい方法があるなら書いてよ... http://mevius.5ch.net/test/read.cgi/tech/1656285423/831
832: デフォルトの名無しさん [sage] 2022/09/27(火) 01:17:35.37 ID:OwORQ6vn mod tests に cfg(test) は必要だとして 依存性の注入にはtrait使えって事なのでは http://mevius.5ch.net/test/read.cgi/tech/1656285423/832
833: デフォルトの名無しさん [sage] 2022/09/27(火) 07:51:04.95 ID:f9SEu4pT traitで置き換え可能にするのが面倒というのはありそうだな。 http://mevius.5ch.net/test/read.cgi/tech/1656285423/833
834: デフォルトの名無しさん [sage] 2022/09/27(火) 08:15:53.87 ID:SBVoZTui AMD64のデフォルトのオペランドサイズは32bitなのにusizeが64bitなのは何でなのかな http://mevius.5ch.net/test/read.cgi/tech/1656285423/834
835: デフォルトの名無しさん [sage] 2022/09/27(火) 11:05:22.42 ID:OwORQ6vn size_tが64bitだからでは http://mevius.5ch.net/test/read.cgi/tech/1656285423/835
836: はちみつ餃子 ◆8X2XSCHEME [sage] 2022/09/27(火) 12:28:55.13 ID:ozjafOA0 >>834 usize はポインタのサイズということになっている。 http://mevius.5ch.net/test/read.cgi/tech/1656285423/836
837: デフォルトの名無しさん [sage] 2022/09/27(火) 19:04:38.56 ID:ZwmfNOl5 >>831 単体テストで、依存を分離するのは当然のことすぎてみんな説明が億劫になってる C++だろうがRubyだろうが、モックやスタブを使って、関数同士やクラス同士の依存を切り分けてテストするのは当たり前 そうしないとそもそも単体テストにならないじゃん わかってる人にしかわからないであろう簡略な説明をすると、テスト用のエントリポイントで、テストに使うモックオブジェクトを指定するだけだよ そういうことができるようにあらかじめコード設計しておかないといけないがな 考えてなかったならリファクタが必要 http://mevius.5ch.net/test/read.cgi/tech/1656285423/837
838: デフォルトの名無しさん [sage] 2022/09/27(火) 19:48:22.41 ID:J8MleXan そんなフワフワした説明されても... http://mevius.5ch.net/test/read.cgi/tech/1656285423/838
839: デフォルトの名無しさん [sage] 2022/09/27(火) 19:51:56.44 ID:AWnlNGZp 本物と異なり決まった値を返す送信元スタブと 本物と異なりassertだけする送信先モックを mod testsの中では本物の代わりにuseするだけだよね 入れ替えちゃうからtrait制約で本物も偽物も受け付け対応とかわざわざする必要ないよね http://mevius.5ch.net/test/read.cgi/tech/1656285423/839
840: デフォルトの名無しさん [sage] 2022/09/28(水) 00:44:24.76 ID:JQpGo85s >>839 useしたモックをどうやって注入すんの 関数の引数もstatic変数でも良いけど、テスト対象の実装がモックも本物も選択的に使えるようにするならば、 genericな型を受け付けるような実装にしておかないといけないのでtraitが登場するのでは それともmod testsの外もcfgで置き換えると言っている? http://mevius.5ch.net/test/read.cgi/tech/1656285423/840
841: デフォルトの名無しさん [sage] 2022/09/28(水) 00:48:00.37 ID:JQpGo85s 要は use imp::Foo; fn target(foo: Foo) {} がテスト対象だとして mod tests { use mock::Foo; #[test] fn test() { target(Foo::new()); } } してもコンパイル通らないよね targetがimp::Fooもmock::Fooも受け付けるようにするにはtraitが必要では http://mevius.5ch.net/test/read.cgi/tech/1656285423/841
842: デフォルトの名無しさん [sage] 2022/09/28(水) 07:20:15.72 ID:1i04Jlqk traitが無い言語では無理ってこと?? http://mevius.5ch.net/test/read.cgi/tech/1656285423/842
843: デフォルトの名無しさん [sage] 2022/09/28(水) 11:35:17.56 ID:RLf9Yg7w >>842 他の言語は他のやり方でやってるだけだろ http://mevius.5ch.net/test/read.cgi/tech/1656285423/843
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 159 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s