Loading...
Loading...
Guide for writing expressive, behavior-focused tests following Vladimir Khorikov's testing principles. Apply when writing, reviewing, or renaming any test (unit, integration, e2e) in any programming language. Triggers: writing tests, creating test files, adding test cases, reviewing test names, 'test naming', 'rename tests', 'Khorikov', or any test creation task. Covers: naming conventions (plain English over rigid policies), what to test (behavior not implementation), testing styles (output > state > communication), and pragmatic test investment.
npx skill4agent add mryll/skills test-namer[MethodUnderTest]_[Scenario]_[ExpectedResult]is_invalidshould_be_invalidatheDelivery_with_a_past_date_is_invalidDelivery_with_invalid_date_is_invalidIsDeliveryValid_InvalidDate_ReturnsFalse -- rigid, cryptic
Delivery_with_invalid_date_should_be_invalid -- plain English (good start)
Delivery_with_past_date_should_be_invalid -- more specific
Delivery_with_past_date_is_invalid -- fact, not wish
Delivery_with_a_past_date_is_invalid -- natural grammar (final)Sum_of_two_numbers
Trimmed_string_has_no_leading_whitespaceTestfunc TestDelivery_with_a_past_date_is_invalid(t *testing.T) { ... }t.Runfunc TestDelivery(t *testing.T) {
t.Run("with a past date is invalid", func(t *testing.T) { ... })
t.Run("with a future date is valid", func(t *testing.T) { ... })
}nametests := []struct {
name string
// ...
}{
{"delivery with a past date is invalid", ...},
{"delivery for tomorrow is valid", ...},
}test_def test_delivery_with_a_past_date_is_invalid():
...
def test_new_customer_starts_in_pending_state():
...@Test@Test
void Delivery_with_a_past_date_is_invalid() { ... }
@Test
void New_customer_starts_in_pending_state() { ... }@Test
fun `delivery with a past date is invalid`() { ... }it("delivery with a past date is invalid", () => { ... });
test("new customer starts in pending state", () => { ... });
describe("delivery validation", () => {
it("rejects past dates", () => { ... });
it("accepts future dates", () => { ... });
});[Fact][Test][Fact]
public void Delivery_with_a_past_date_is_invalid() { ... }#[test]#[test]
fn delivery_with_a_past_date_is_invalid() { ... }[ClassName]Tests[feature]_test