Hacker News new | past | comments | ask | show | jobs | submit login

Can you write up the Java version too? I don't think it would be significantly more terse.

Maybe you'd lose the:

    for name, tc := range tests {
    t.Run(name, func(t *testing.T) {
But gain:

    @ParameterizedTest



Spock is the most readable framework for testing java IMO, their data driven testing is great, but it might not be a fair comparison because it's written with groovy:

  def 'split #input with sep #sep should return #expected'() {
    expect:
    Split(input, sep) == expected

    where:
    testCase      | input   | sep || expected
    "simple"      | "a/b/c" | "/" || ['a', 'b', 'c']
    "wrong sep"   | "a/b/c" | "," || ['a/b/c']
    "no sep"      | "abc"   | "/" || ['abc']
    "trailing sep"| "a/b/c/"| "/" || ['a', 'b', 'c']
  }


Alright, it's not quite as concise as I remember because you can't use arrays in a CSVSource. But I still argue that it is a vast improvement. You have your data + test condition and almost nothing on top.

Code: https://pastebin.com/14hLe6Fz

And now all of the horribleness of requiring a struct definition + defining the data inside your method + for loop is gone. The intend is clear and based upon your liking you can move the test data into a separate class, at the end of the file or next to the test case.

PS: I just realized you can't edit your post after 1+ hours have passed!


Placeholder

Will do once Iā€™m back from work, ~ 3h




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: