/usr/share/doc/junit4/api/src-html/org/junit/runner/notification/RunListener.html is in junit4-doc 4.12-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>package org.junit.runner.notification;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>import java.lang.annotation.Documented;<a name="line.3"></a>
<span class="sourceLineNo">004</span>import java.lang.annotation.ElementType;<a name="line.4"></a>
<span class="sourceLineNo">005</span>import java.lang.annotation.Retention;<a name="line.5"></a>
<span class="sourceLineNo">006</span>import java.lang.annotation.RetentionPolicy;<a name="line.6"></a>
<span class="sourceLineNo">007</span>import java.lang.annotation.Target;<a name="line.7"></a>
<span class="sourceLineNo">008</span><a name="line.8"></a>
<span class="sourceLineNo">009</span>import org.junit.runner.Description;<a name="line.9"></a>
<span class="sourceLineNo">010</span>import org.junit.runner.Result;<a name="line.10"></a>
<span class="sourceLineNo">011</span><a name="line.11"></a>
<span class="sourceLineNo">012</span>/**<a name="line.12"></a>
<span class="sourceLineNo">013</span> * Register an instance of this class with {@link RunNotifier} to be notified<a name="line.13"></a>
<span class="sourceLineNo">014</span> * of events that occur during a test run. All of the methods in this class<a name="line.14"></a>
<span class="sourceLineNo">015</span> * are abstract and have no implementation; override one or more methods to<a name="line.15"></a>
<span class="sourceLineNo">016</span> * receive events.<a name="line.16"></a>
<span class="sourceLineNo">017</span> * <p><a name="line.17"></a>
<span class="sourceLineNo">018</span> * For example, suppose you have a <code>Cowbell</code><a name="line.18"></a>
<span class="sourceLineNo">019</span> * class that you want to make a noise whenever a test fails. You could write:<a name="line.19"></a>
<span class="sourceLineNo">020</span> * <pre><a name="line.20"></a>
<span class="sourceLineNo">021</span> * public class RingingListener extends RunListener {<a name="line.21"></a>
<span class="sourceLineNo">022</span> * public void testFailure(Failure failure) {<a name="line.22"></a>
<span class="sourceLineNo">023</span> * Cowbell.ring();<a name="line.23"></a>
<span class="sourceLineNo">024</span> * }<a name="line.24"></a>
<span class="sourceLineNo">025</span> * }<a name="line.25"></a>
<span class="sourceLineNo">026</span> * </pre><a name="line.26"></a>
<span class="sourceLineNo">027</span> * <p><a name="line.27"></a>
<span class="sourceLineNo">028</span> * To invoke your listener, you need to run your tests through <code>JUnitCore</code>.<a name="line.28"></a>
<span class="sourceLineNo">029</span> * <pre><a name="line.29"></a>
<span class="sourceLineNo">030</span> * public void main(String... args) {<a name="line.30"></a>
<span class="sourceLineNo">031</span> * JUnitCore core= new JUnitCore();<a name="line.31"></a>
<span class="sourceLineNo">032</span> * core.addListener(new RingingListener());<a name="line.32"></a>
<span class="sourceLineNo">033</span> * core.run(MyTestClass.class);<a name="line.33"></a>
<span class="sourceLineNo">034</span> * }<a name="line.34"></a>
<span class="sourceLineNo">035</span> * </pre><a name="line.35"></a>
<span class="sourceLineNo">036</span> * <p><a name="line.36"></a>
<span class="sourceLineNo">037</span> * If a listener throws an exception for a test event, the other listeners will<a name="line.37"></a>
<span class="sourceLineNo">038</span> * have their {@link RunListener#testFailure(Failure)} called with a {@code Description}<a name="line.38"></a>
<span class="sourceLineNo">039</span> * of {@link Description#TEST_MECHANISM} to indicate the failure.<a name="line.39"></a>
<span class="sourceLineNo">040</span> * <p><a name="line.40"></a>
<span class="sourceLineNo">041</span> * By default, JUnit will synchronize calls to your listener. If your listener<a name="line.41"></a>
<span class="sourceLineNo">042</span> * is thread-safe and you want to allow JUnit to call your listener from<a name="line.42"></a>
<span class="sourceLineNo">043</span> * multiple threads when tests are run in parallel, you can annotate your<a name="line.43"></a>
<span class="sourceLineNo">044</span> * test class with {@link RunListener.ThreadSafe}.<a name="line.44"></a>
<span class="sourceLineNo">045</span> * <p><a name="line.45"></a>
<span class="sourceLineNo">046</span> * Listener methods will be called from the same thread as is running<a name="line.46"></a>
<span class="sourceLineNo">047</span> * the test, unless otherwise indicated by the method Javadoc<a name="line.47"></a>
<span class="sourceLineNo">048</span> *<a name="line.48"></a>
<span class="sourceLineNo">049</span> * @see org.junit.runner.JUnitCore<a name="line.49"></a>
<span class="sourceLineNo">050</span> * @since 4.0<a name="line.50"></a>
<span class="sourceLineNo">051</span> */<a name="line.51"></a>
<span class="sourceLineNo">052</span>public class RunListener {<a name="line.52"></a>
<span class="sourceLineNo">053</span><a name="line.53"></a>
<span class="sourceLineNo">054</span> /**<a name="line.54"></a>
<span class="sourceLineNo">055</span> * Called before any tests have been run. This may be called on an<a name="line.55"></a>
<span class="sourceLineNo">056</span> * arbitrary thread.<a name="line.56"></a>
<span class="sourceLineNo">057</span> *<a name="line.57"></a>
<span class="sourceLineNo">058</span> * @param description describes the tests to be run<a name="line.58"></a>
<span class="sourceLineNo">059</span> */<a name="line.59"></a>
<span class="sourceLineNo">060</span> public void testRunStarted(Description description) throws Exception {<a name="line.60"></a>
<span class="sourceLineNo">061</span> }<a name="line.61"></a>
<span class="sourceLineNo">062</span><a name="line.62"></a>
<span class="sourceLineNo">063</span> /**<a name="line.63"></a>
<span class="sourceLineNo">064</span> * Called when all tests have finished. This may be called on an<a name="line.64"></a>
<span class="sourceLineNo">065</span> * arbitrary thread.<a name="line.65"></a>
<span class="sourceLineNo">066</span> *<a name="line.66"></a>
<span class="sourceLineNo">067</span> * @param result the summary of the test run, including all the tests that failed<a name="line.67"></a>
<span class="sourceLineNo">068</span> */<a name="line.68"></a>
<span class="sourceLineNo">069</span> public void testRunFinished(Result result) throws Exception {<a name="line.69"></a>
<span class="sourceLineNo">070</span> }<a name="line.70"></a>
<span class="sourceLineNo">071</span><a name="line.71"></a>
<span class="sourceLineNo">072</span> /**<a name="line.72"></a>
<span class="sourceLineNo">073</span> * Called when an atomic test is about to be started.<a name="line.73"></a>
<span class="sourceLineNo">074</span> *<a name="line.74"></a>
<span class="sourceLineNo">075</span> * @param description the description of the test that is about to be run<a name="line.75"></a>
<span class="sourceLineNo">076</span> * (generally a class and method name)<a name="line.76"></a>
<span class="sourceLineNo">077</span> */<a name="line.77"></a>
<span class="sourceLineNo">078</span> public void testStarted(Description description) throws Exception {<a name="line.78"></a>
<span class="sourceLineNo">079</span> }<a name="line.79"></a>
<span class="sourceLineNo">080</span><a name="line.80"></a>
<span class="sourceLineNo">081</span> /**<a name="line.81"></a>
<span class="sourceLineNo">082</span> * Called when an atomic test has finished, whether the test succeeds or fails.<a name="line.82"></a>
<span class="sourceLineNo">083</span> *<a name="line.83"></a>
<span class="sourceLineNo">084</span> * @param description the description of the test that just ran<a name="line.84"></a>
<span class="sourceLineNo">085</span> */<a name="line.85"></a>
<span class="sourceLineNo">086</span> public void testFinished(Description description) throws Exception {<a name="line.86"></a>
<span class="sourceLineNo">087</span> }<a name="line.87"></a>
<span class="sourceLineNo">088</span><a name="line.88"></a>
<span class="sourceLineNo">089</span> /**<a name="line.89"></a>
<span class="sourceLineNo">090</span> * Called when an atomic test fails, or when a listener throws an exception.<a name="line.90"></a>
<span class="sourceLineNo">091</span> *<a name="line.91"></a>
<span class="sourceLineNo">092</span> * <p>In the case of a failure of an atomic test, this method will be called<a name="line.92"></a>
<span class="sourceLineNo">093</span> * with the same {@code Description} passed to<a name="line.93"></a>
<span class="sourceLineNo">094</span> * {@link #testStarted(Description)}, from the same thread that called<a name="line.94"></a>
<span class="sourceLineNo">095</span> * {@link #testStarted(Description)}.<a name="line.95"></a>
<span class="sourceLineNo">096</span> *<a name="line.96"></a>
<span class="sourceLineNo">097</span> * <p>In the case of a listener throwing an exception, this will be called with<a name="line.97"></a>
<span class="sourceLineNo">098</span> * a {@code Description} of {@link Description#TEST_MECHANISM}, and may be called<a name="line.98"></a>
<span class="sourceLineNo">099</span> * on an arbitrary thread.<a name="line.99"></a>
<span class="sourceLineNo">100</span> *<a name="line.100"></a>
<span class="sourceLineNo">101</span> * @param failure describes the test that failed and the exception that was thrown<a name="line.101"></a>
<span class="sourceLineNo">102</span> */<a name="line.102"></a>
<span class="sourceLineNo">103</span> public void testFailure(Failure failure) throws Exception {<a name="line.103"></a>
<span class="sourceLineNo">104</span> }<a name="line.104"></a>
<span class="sourceLineNo">105</span><a name="line.105"></a>
<span class="sourceLineNo">106</span> /**<a name="line.106"></a>
<span class="sourceLineNo">107</span> * Called when an atomic test flags that it assumes a condition that is<a name="line.107"></a>
<span class="sourceLineNo">108</span> * false<a name="line.108"></a>
<span class="sourceLineNo">109</span> *<a name="line.109"></a>
<span class="sourceLineNo">110</span> * @param failure describes the test that failed and the<a name="line.110"></a>
<span class="sourceLineNo">111</span> * {@link org.junit.AssumptionViolatedException} that was thrown<a name="line.111"></a>
<span class="sourceLineNo">112</span> */<a name="line.112"></a>
<span class="sourceLineNo">113</span> public void testAssumptionFailure(Failure failure) {<a name="line.113"></a>
<span class="sourceLineNo">114</span> }<a name="line.114"></a>
<span class="sourceLineNo">115</span><a name="line.115"></a>
<span class="sourceLineNo">116</span> /**<a name="line.116"></a>
<span class="sourceLineNo">117</span> * Called when a test will not be run, generally because a test method is annotated<a name="line.117"></a>
<span class="sourceLineNo">118</span> * with {@link org.junit.Ignore}.<a name="line.118"></a>
<span class="sourceLineNo">119</span> *<a name="line.119"></a>
<span class="sourceLineNo">120</span> * @param description describes the test that will not be run<a name="line.120"></a>
<span class="sourceLineNo">121</span> */<a name="line.121"></a>
<span class="sourceLineNo">122</span> public void testIgnored(Description description) throws Exception {<a name="line.122"></a>
<span class="sourceLineNo">123</span> }<a name="line.123"></a>
<span class="sourceLineNo">124</span><a name="line.124"></a>
<span class="sourceLineNo">125</span><a name="line.125"></a>
<span class="sourceLineNo">126</span> /**<a name="line.126"></a>
<span class="sourceLineNo">127</span> * Indicates a {@code RunListener} that can have its methods called<a name="line.127"></a>
<span class="sourceLineNo">128</span> * concurrently. This implies that the class is thread-safe (i.e. no set of<a name="line.128"></a>
<span class="sourceLineNo">129</span> * listener calls can put the listener into an invalid state, even if those<a name="line.129"></a>
<span class="sourceLineNo">130</span> * listener calls are being made by multiple threads without<a name="line.130"></a>
<span class="sourceLineNo">131</span> * synchronization).<a name="line.131"></a>
<span class="sourceLineNo">132</span> *<a name="line.132"></a>
<span class="sourceLineNo">133</span> * @since 4.12<a name="line.133"></a>
<span class="sourceLineNo">134</span> */<a name="line.134"></a>
<span class="sourceLineNo">135</span> @Documented<a name="line.135"></a>
<span class="sourceLineNo">136</span> @Target(ElementType.TYPE)<a name="line.136"></a>
<span class="sourceLineNo">137</span> @Retention(RetentionPolicy.RUNTIME)<a name="line.137"></a>
<span class="sourceLineNo">138</span> public @interface ThreadSafe {<a name="line.138"></a>
<span class="sourceLineNo">139</span> }<a name="line.139"></a>
<span class="sourceLineNo">140</span>}<a name="line.140"></a>
</pre>
</div>
</body>
</html>
|