[{"data":1,"prerenderedAt":236},["ShallowReactive",2],{"project-35972112":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":33,"aspects":34,"strip":37,"post_text":40,"what":41,"said":68,"maker_in_thread":144,"shape":156,"grid":159,"attempts":197,"same_week":198,"maker_shows":32,"maker_hidden":228,"reader_version":229,"card":230},"35972112","Unlogged","Speeding up the code-test cycle for Java developers","title","Show HN: Speeding up the code-test cycle for Java developers",null,"artpar",1684307064,2023,69,15,869,3109,28,"notable","dev_tools","java ide plugin","desktop_app",[23,24,25,26,27],"java testing","intellij plugin","hot reload","code test cycle","direct invoke","debated",0,{"positive":31,"neutral":32,"mixed":29,"critical":31},2,3,7,{"idea":35,"design":36},{"positive":31,"critical":31},{"positive":29,"critical":29},[38,29,32,32,29,39,29,29,29,29,29,29,29,32,38,29,39],5,1,"Hello HN, I am Parth. In my experience, the current form of testing automation has a long feedback cycle. To solve this, I am creating a developer tool to fasten up the code-test cycle for Java developers. It has two main parts\n\nDirect Invoke - lets you call any Java function directly, without the need to execute the whole call hierarchy. (e.g. an HTTP endpoint) In my normal coding workflow, I use the “Evaluate Expression” feature inside IntelliJ IDE. I usually put a breakpoint somewhere in the code and after hitting the breakpoint by calling an HTTP api, let the execution remain paused while ",{"problem":42,"audience":48,"pricing":9,"motivation":52,"time_to_build":9,"stack":56,"openness":65,"stage":66,"team_size":67},{"value":43,"source":44,"evidence":45},"Long feedback cycle between changing Java code and testing it","maker",[46],{"id":47},"post",{"value":49,"source":44,"evidence":50},"Java developers",[51],{"id":47},{"value":53,"source":44,"evidence":54},"Maker found the IDE's Evaluate Expression workflow useful but slow for testing",[55],{"id":47},[57,61],{"value":58,"source":44,"evidence":59},"Java",[60],{"id":47},{"value":62,"source":44,"evidence":63},"IntelliJ IDEA plugin",[64],{"id":47},"unknown","beta","team",{"praise":69,"objections":82,"requests":101,"questions":110,"alternatives":119},[70],{"value":71,"source":72,"evidence":73},"Useful for speeding up Java debugging and testing","commenter",[74,78],{"id":75,"by":76,"text":77},"35972237","ratpik","Good plugin! Debugging is still harder than expected and tools like these do help. For mocking downstream dependencies, can I get templates based on existing calls?",{"id":79,"by":80,"text":81},"35979876","ianlevesque","That's really cool. I think there's still a lot of untapped potential in Java & Kotlin tooling, despite how far ahead of most other languages the IDE story is there anyway. Your…",[83,90,97],{"value":84,"source":72,"evidence":85},"Duplicates IntelliJ's existing run-and-debug features",[86],{"id":87,"by":88,"text":89},"35981111","SillyUsername","Isn't this just reinventing the wheel and just replicating a built in IDE feature? I.e. what is wrong with Intellij's existing right click-execute on a single junit test method…",{"value":91,"source":72,"evidence":92},"Solves a problem that doesn't really exist",[93],{"id":94,"by":95,"text":96},"35982687","pshirshov","An extremely complicated solution for a problem which does not actually exist.",{"value":98,"source":72,"evidence":99},"Focuses on unit tests while end-to-end testing is where time is lost",[100],{"id":87,"by":88,"text":89},[102,106],{"value":103,"source":72,"evidence":104},"Mocking downstream dependency calls",[105],{"id":75,"by":76,"text":77},{"value":107,"source":72,"evidence":108},"Templates for mocking based on existing calls",[109],{"id":75,"by":76,"text":77},[111],{"value":112,"source":72,"evidence":113},"How it differs from IntelliJ's built-in debugging and Evaluate Expression",[114,115],{"id":87,"by":88,"text":89},{"id":116,"by":117,"text":118},"35981290","mkasberg","> without the need to execute the whole call hierarchy. (e.g. an HTTP endpoint)... > “Evaluate Expression” was quite useful in exploring new codebases and checking return values…",[120,125,133],{"value":121,"source":72,"evidence":122},"IntelliJ Evaluate Expression and JUnit run\u002Fdebug",[123,124],{"id":87,"by":88,"text":89},{"id":116,"by":117,"text":118},{"value":126,"source":72,"evidence":127},"JRebel for hot reloading",[128,132],{"id":129,"by":130,"text":131},"35982754","karulont","The reloading part reminded me about https:\u002F\u002Fwww.jrebel.com\u002F",{"id":79,"by":80,"text":81},{"value":134,"source":72,"evidence":135},"Clojure REPL and jshell",[136,140],{"id":137,"by":138,"text":139},"35981263","beanjuiceII","when i want to play with java stuff interactively i just actually open it up in clojure repl",{"id":141,"by":142,"text":143},"35984683","jiehong","A jshell session can also work for that, but IntelliJ doesn’t add all your classes to the module path so jshell doesn’t usually know about them, which is a big oversight IMO.",{"comments":145,"answered":31,"key":146},6,[147,150,153],{"id":148,"text":149},"35980746","Yeah I understand what you mean when you say hot reloading is something that comes and goes. There are a variety of edge cases even though there is increasing support from the…",{"id":151,"text":152},"35981508","I just mentioned this in another response but will say this again, generating junit test cases is what we started doing in the first place. We have still have that in the plugin.…",{"id":154,"text":155},"35981463","> I.e. what is wrong with Intellij's existing right click-execute on a single junit test method to debug and inspecting variables that way? There is definitely nothing wrong with…",{"commenters":157,"max_depth":32,"maker_replies":145,"first_comment_mins":31,"lifespan_hours":158},12,25,[160,162,164,168,170,171,173,175,178,180,183,184,186,187,191,192,195],[79,29,38,161,80,29],"project\u002Fpositive\u002Fidea",[148,29,29,163,10,39],"project\u002Fneutral\u002Fperformance",[165,39,32,166,167,29],"35972126","maker\u002Fneutral\u002Fnone","shardullavekar",[116,31,32,169,117,29],"project\u002Fneutral\u002Fidea",[151,31,29,169,10,39],[87,32,39,172,88,29],"project\u002Fcritical\u002Fidea",[154,32,29,174,10,39],"project\u002Fmixed\u002Fidea",[137,176,29,177,138,29],4,"other\u002Fneutral\u002Fnone",[179,176,29,166,10,39],"35981584",[181,176,29,177,182,29],"35981937","preordained",[141,176,29,177,142,29],[185,176,29,161,10,39],"35985195",[129,38,29,177,130,29],[188,145,32,189,190,29],"35972174","maker\u002Fneutral\u002Fdesign","akshay_design",[75,33,38,161,76,29],[193,33,29,194,10,39],"35972281","maker\u002Fneutral\u002Fidea",[94,196,39,172,95,29],8,[],[199,204,209,214,219,224],{"id":200,"name":201,"points":202,"category":203},"35905437","Boring Report",1166,"productivity",{"id":205,"name":206,"points":207,"category":208},"35976488","Beepberry",731,"hardware",{"id":210,"name":211,"points":212,"category":213},"35948462","Willow",581,"ai",{"id":215,"name":216,"points":217,"category":218},"35904734","Moderator Mayhem",221,"learning_science",{"id":220,"name":221,"points":222,"category":223},"35958715","Oblivus GPU Cloud",193,"infrastructure",{"id":225,"name":226,"points":227,"category":223},"35966680","lkwebserver",178,false,"v2",{"id":231,"name":5,"line":6,"ai":228,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":29,"top":17,"kw":232,"maker":10,"domain":233,"tier":18,"attempts":29,"strip":234,"url":-1,"mix":235,"praise":71,"objection":84,"sub":20},35972112,[23,24,25,26,27],"","50330100000003501",[31,32,29,31],1794036635691]