Best junit code snippet using org.junit.rules.Stopwatch.runtime
Source:HelloRxTest.java  
1package com.venku.rx;2import static org.hamcrest.core.Is.is;3import static org.junit.Assert.assertThat;4import java.util.Arrays;5import java.util.concurrent.TimeUnit;6import org.junit.Assert;7import org.junit.Before;8import org.junit.Rule;9import org.junit.Test;10import org.junit.rules.TestRule;11import org.junit.rules.TestWatcher;12import org.junit.runner.Description;13import com.google.common.base.Stopwatch;14import rx.Observable;15import rx.functions.Action0;16import rx.functions.Action1;17import rx.functions.Func1;18import rx.observers.TestSubscriber;19/**20 * Some reactive implementations of traditional first program.21 * <p>22 * Given a list of strings, join with space, then append '!'.<p>23 * Like: String.join(" ", "Hello","world") + "!"24 * 25 * @version 1.126 * @author jbetancourt27 */28public class HelloRxTest {29    private Observable<String> observable;30    private Exception thrown;31    private StringBuilder buf;32    private static final String SPACE = " ";33    /** Setup test fixture */34    @Before35    public void before() {36        observable = Observable.from(Arrays.asList("Hello", "world"));37        buf = new StringBuilder();38    }39    /** Correct result string? */40    private void assertHello() {41        assertThat(buf.toString(), is("Hello world!"));42    }43    /**44     * Simple imperative solution.45     */46    @Test47    public final void nonObservableApproach() {48        buf.append(String.join(SPACE, "Hello", "world")).append("!");49        assertHello();50    }51    /**52     * Using reduce.53     */54    @Test55    public final void test1() {56        observable.reduce((t1, t2) -> t1 + " " + t2)57                .subscribe((s) -> buf.append(s).append("!"));58        assertHello();59    }60    /**61     * Concatting concats. Meow62     */63    @SuppressWarnings("static-access")64    @Test65    public final void test2() {66        observable.concat(67                observable.concatMap(68                        data -> Observable.from(Arrays.asList(data, SPACE))).skipLast(1),69                Observable.just("!"))70                .subscribe((s) -> buf.append(s));71        assertHello();72    }73    /**74     * Using concatMap.75     */76    @Test77    public final void test3() {78        observable.concatMap(data -> Observable.from(new String[] { data, SPACE }))79                .skipLast(1)80                .subscribe(81                        data -> {82                            buf.append(data);83                        } ,84                        (e) -> {85                            thrown = new RuntimeException(((Throwable) e).getMessage());86                        } ,87                        () -> buf.append("!"));88        assertHello();89    }90    /**91     * Concatting zip<p>92     * Doesn't work!93     */94    @Test(expected = AssertionError.class)95    public final void test2b() {96        Observable.concat(97                Observable.zip(98                        observable,99                        Observable.just(SPACE).repeat(),100                        (s1, s2) -> s1 + s2),101                Observable.just("!"))102                .subscribe(s -> buf.append(s));103        assertHello();104    }105    /**106     * Dan Lew's example in 'Grokking RxJava, Part 1: The Basics'.<p>107     * Converted to a test.108     * @see "http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/"109     * @throws Exception110     */111    @Test112    public final void test6() throws Exception {113        TestSubscriber<String> testSubscriber = new TestSubscriber<>();114        Observable.just("Hello, world!")115                .map(s -> s + " -Dan")116                .map(s -> s.hashCode())117                .map(i -> Integer.toString(i))118                .subscribe(testSubscriber);119        // .subscribe(s -> System.out.println(s)); // -120        testSubscriber.assertValue("-238955153");121        testSubscriber.assertTerminalEvent();122        testSubscriber.assertNoErrors();123    }124    /**125     * Concatting zip<p>126     * Doesn't work!127     */128    @Test(expected = AssertionError.class)129    public final void test2c() {130        Observable.concat(131                Observable.zip(132                        observable,133                        Observable.just(SPACE).repeat(),134                        (a, b) -> a + b),135                Observable.just("!"))136                .subscribe((a) -> buf.append(a));137        assertHello();138    }139    /**140     * Fail test within an onCompleted.141     * Doesn't work!142     * 143     * Also, how to use a lambda for subscribe? The onError(e) is 144     * not visible.145     * 146     * @throws Exception147     */148    @Test(expected = RuntimeException.class)149    public final void test4() throws Exception {150        Action1<String> appender = data -> buf.append(data).append(SPACE);151        Action1<Throwable> errorFunction = (e) -> thrown = new RuntimeException(e.getMessage(), e);152        Action0 complete = () -> {153            try {154                String actual = buf.append("!").toString();155                Assert.assertEquals("Hello world!", actual);156            } catch (Throwable e) {157                thrown = new RuntimeException(e);158            }159        };160        observable.subscribe(appender, errorFunction, complete);161        if (null != thrown) {162            System.out.println("failed 4");163            throw thrown;164        }165    }166    /**167     * @param o168     * @return observable169     */170    public static <T> Observable<T> handleTestError(Observable<T> o) {171        return o.onErrorResumeNext(new Func1<Throwable, Observable<T>>() {172            @Override173            public Observable<T> call(Throwable err) {174                System.out.println("in error stuff ...");175                return Observable.error(err);176            }177        });178    }179    /**180     * Another approach that fails.181     * Doesn't work!182     * @throws Exception183     */184    @Test(expected = RuntimeException.class)185    public final void test5() throws Exception {186        observable.subscribe(187                (s) -> {188                    buf.append(s).append(SPACE);189                } ,190                (e) -> {191                    thrown = new RuntimeException(((Throwable) e).getMessage());192                } ,193                () -> buf.append("!"));194        if ("Hello world!".compareTo(buf.toString()) != 0) {195            System.out.println("failed 5");196            throw thrown;197        }198    }199    /**200     * Print name and elapsed time for each test.201     * @see "http://stackoverflow.com/a/32460841/1149606" 202     */203    @Rule204    public TestRule watcher = new TestWatcher() {205        private Stopwatch stopwatch = new Stopwatch();206        @Override207        protected void starting(Description description) {208            stopwatch.start();209            System.out.println("[[[<==== Start: [" + description.getTestClass().getSimpleName() + "."210                    + description.getMethodName() + "]");211        }212        @Override213        protected void finished(Description description) {214            long timeEnd = stopwatch.elapsed(TimeUnit.MILLISECONDS);215            System.out216                    .println("[[[>==== End: [" + description.getMethodName() + "] Elapsed: " + timeEnd + " ms");217        }218    };219}...Source:StopwatchTest.java  
...107    public static class DurationDuringTestTest extends AbstractStopwatchTest {108        @Test109        public void duration() {110            simulateTimePassing(300L);111            assertEquals(300L, stopwatch.runtime(MILLISECONDS));112            simulateTimePassing(500L);113            assertEquals(800L, stopwatch.runtime(MILLISECONDS));114        }115    }116    public static class DurationAfterTestTest extends AbstractStopwatchTest {117        @Test118        public void duration() {119            simulateTimePassing(300L);120            assertEquals(300L, stopwatch.runtime(MILLISECONDS));121        }122        @Override123        protected void afterStopwatchRule() {124            assertEquals(300L, stopwatch.runtime(MILLISECONDS));125            simulateTimePassing(500L);126            assertEquals(300L, stopwatch.runtime(MILLISECONDS));127        }128    }129    @Before130    public void init() {131        record = new Record();132        finishedRecord = new Record();133        simulateTimePassing(1L);134    }135    private static Result runTest(Class<?> test) {136        simulateTimePassing(1L);137        JUnitCore junitCore = new JUnitCore();138        return junitCore.run(Request.aClass(test).getRunner());139    }140    private static void simulateTimePassing(long millis) {141        fakeTimeNanos += TimeUnit.MILLISECONDS.toNanos(millis);142    }143    @Test144    public void succeeded() {145        Result result = runTest(SuccessfulTest.class);146        assertEquals(0, result.getFailureCount());147        assertThat(record.name, is("successfulTest"));148        assertThat(record.name, is(finishedRecord.name));149        assertThat(record.status, is(TestStatus.SUCCEEDED));150        assertTrue("timeSpent > 0", record.duration > 0);151        assertThat(record.duration, is(finishedRecord.duration));152    }153    @Test154    public void failed() {155        Result result = runTest(FailedTest.class);156        assertEquals(1, result.getFailureCount());157        assertThat(record.name, is("failedTest"));158        assertThat(record.name, is(finishedRecord.name));159        assertThat(record.status, is(TestStatus.FAILED));160        assertTrue("timeSpent > 0", record.duration > 0);161        assertThat(record.duration, is(finishedRecord.duration));162    }163    @Test164    public void skipped() {165        Result result = runTest(SkippedTest.class);166        assertEquals(0, result.getFailureCount());167        assertThat(record.name, is("skippedTest"));168        assertThat(record.name, is(finishedRecord.name));169        assertThat(record.status, is(TestStatus.SKIPPED));170        assertTrue("timeSpent > 0", record.duration > 0);171        assertThat(record.duration, is(finishedRecord.duration));172    }173    @Test174    public void runtimeDuringTestShouldReturnTimeSinceStart() {175        Result result = runTest(DurationDuringTestTest.class);176        assertTrue(result.wasSuccessful());177    }178  @Test179    public void runtimeAfterTestShouldReturnRunDuration() {180        Result result = runTest(DurationAfterTestTest.class);181        assertTrue(result.wasSuccessful());182    }183}...Source:Stopwatch.java  
...12    }13    Stopwatch(Clock clock2) {14        this.clock = clock2;15    }16    public long runtime(TimeUnit unit) {17        return unit.convert(getNanos(), TimeUnit.NANOSECONDS);18    }19    /* access modifiers changed from: protected */20    public void succeeded(long nanos, Description description) {21    }22    /* access modifiers changed from: protected */23    public void failed(long nanos, Throwable e, Description description) {24    }25    /* access modifiers changed from: protected */26    public void skipped(long nanos, AssumptionViolatedException e, Description description) {27    }28    /* access modifiers changed from: protected */29    public void finished(long nanos, Description description) {30    }...runtime
Using AI Code Generation
1import org.junit.rules.Stopwatch;2import org.junit.Rule;3public class TestStopwatch {4    public Stopwatch stopwatch = new Stopwatch() {5        protected void finished(long nanos, Description description) {6            System.out.println("Finished in " + nanos + " nanoseconds");7        }8    };9    public void test() throws InterruptedException {10        Thread.sleep(1000);11    }12}13import org.junit.Rule;14import org.junit.Test;15import org.junit.rules.Stopwatch;16import org.junit.runner.Description;17public class TestStopwatch {18    public Stopwatch stopwatch = new Stopwatch() {19        protected void finished(long nanos, Description description) {20            System.out.println(description.getMethodName() + " finished in " + nanos + " nanoseconds");21        }22    };23    public void test1() throws InterruptedException {24        Thread.sleep(1000);25    }26    public void test2() throws InterruptedException {27        Thread.sleep(1000);28    }29}30import org.junit.Rule;31import org.junit.Test;32import org.junit.rules.Stopwatch;33import org.junit.runner.Description;34public class TestStopwatch {35    public Stopwatch stopwatch = new Stopwatch() {36        protected void finished(long nanos, Description description) {37            System.out.println("Finished in " + nanos + " nanoseconds");38        }39    };40    public void test1() throws InterruptedException {41        Thread.sleep(1000);42    }43    public void test2() throwsruntime
Using AI Code Generation
1import org.junit.rules.Stopwatch;2import org.junit.runner.Description;3import org.junit.runners.model.Statement;4import java.util.concurrent.TimeUnit;5public class StopwatchRule implements org.junit.rules.TestRule {6    private final Stopwatch stopwatch = new Stopwatch();7    private final StringBuilder text = new StringBuilder();8    private final String name;9    public StopwatchRule(String name) {10        this.name = name;11    }12    public Statement apply(Statement base, Description description) {13        return stopwatch.apply(base, description);14    }15    public String getLog() {16        return text.toString();17    }18    public void finish() {19        text.append(String.format("## %s took %s%n", name, stopwatch.runtime(TimeUnit.MILLISECONDS)));20    }21}22public class StopWatchTest {23    public StopwatchRule stopwatch = new StopwatchRule("test1");24    public void test1() throws InterruptedException {25        Thread.sleep(1000);26    }27}runtime
Using AI Code Generation
1import org.junit.rules.Stopwatch;2import org.junit.Rule;3import org.junit.Test;4import org.junit.runner.Description;5import java.util.concurrent.TimeUnit;6import org.junit.runners.model.Statement;7public class TestStopWatch {8    public Stopwatch stopwatch = new Stopwatch() {9        protected void succeeded(long nanos, Description description) {10            System.out.println(description.getDisplayName() + " succeeded in " + nanos + " nanoseconds");11        }12        protected void failed(long nanos, Throwable e, Description description) {13            System.out.println(description.getDisplayName() + " failed in " + nanos + " nanoseconds");14        }15        protected void finished(long nanos, Description description) {16            System.out.println(description.getDisplayName() + " finished in " + nanos + " nanoseconds");17        }18    };19    public void test1() throws Exception {20        TimeUnit.SECONDS.sleep(1);21    }22    public void test2() throws Exception {23        TimeUnit.SECONDS.sleep(2);24    }25}LambdaTest also has a detailed JUnit tutorial explaining its features, importance, advanced use cases, best practices, and more to help you get started with running your automation testing scripts.
Here are the detailed JUnit testing chapters to help you get started:
You can also check out our JUnit certification if you wish to take your career in Selenium automation testing with JUnit to the next level.
Get 100 minutes of automation test minutes FREE!!
