001 package org.junit.rules;
002
003 import org.junit.runner.Description;
004
005 /**
006 * The TestName Rule makes the current test name available inside test methods:
007 *
008 * <pre>
009 * public class TestNameTest {
010 * @Rule
011 * public TestName name= new TestName();
012 *
013 * @Test
014 * public void testA() {
015 * assertEquals("testA", name.getMethodName());
016 * }
017 *
018 * @Test
019 * public void testB() {
020 * assertEquals("testB", name.getMethodName());
021 * }
022 * }
023 * </pre>
024 *
025 * @since 4.7
026 */
027 public class TestName extends TestWatcher {
028 private volatile String name;
029
030 @Override
031 protected void starting(Description d) {
032 name = d.getMethodName();
033 }
034
035 /**
036 * @return the name of the currently-running test method
037 */
038 public String getMethodName() {
039 return name;
040 }
041 }