/usr/share/doc/junit4/api/src-html/org/junit/ClassRule.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 | <!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;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>import java.lang.annotation.ElementType;<a name="line.3"></a>
<span class="sourceLineNo">004</span>import java.lang.annotation.Retention;<a name="line.4"></a>
<span class="sourceLineNo">005</span>import java.lang.annotation.RetentionPolicy;<a name="line.5"></a>
<span class="sourceLineNo">006</span>import java.lang.annotation.Target;<a name="line.6"></a>
<span class="sourceLineNo">007</span><a name="line.7"></a>
<span class="sourceLineNo">008</span>/**<a name="line.8"></a>
<span class="sourceLineNo">009</span> * Annotates static fields that reference rules or methods that return them. A field must be public,<a name="line.9"></a>
<span class="sourceLineNo">010</span> * static, and a subtype of {@link org.junit.rules.TestRule}. A method must be public static, and return<a name="line.10"></a>
<span class="sourceLineNo">011</span> * a subtype of {@link org.junit.rules.TestRule}.<a name="line.11"></a>
<span class="sourceLineNo">012</span> * <p><a name="line.12"></a>
<span class="sourceLineNo">013</span> * The {@link org.junit.runners.model.Statement} passed<a name="line.13"></a>
<span class="sourceLineNo">014</span> * to the {@link org.junit.rules.TestRule} will run any {@link BeforeClass} methods,<a name="line.14"></a>
<span class="sourceLineNo">015</span> * then the entire body of the test class (all contained methods, if it is<a name="line.15"></a>
<span class="sourceLineNo">016</span> * a standard JUnit test class, or all contained classes, if it is a<a name="line.16"></a>
<span class="sourceLineNo">017</span> * {@link org.junit.runners.Suite}), and finally any {@link AfterClass} methods.<a name="line.17"></a>
<span class="sourceLineNo">018</span> * <p><a name="line.18"></a>
<span class="sourceLineNo">019</span> * The statement passed to the {@link org.junit.rules.TestRule} will never throw an exception,<a name="line.19"></a>
<span class="sourceLineNo">020</span> * and throwing an exception from the {@link org.junit.rules.TestRule} will result in undefined<a name="line.20"></a>
<span class="sourceLineNo">021</span> * behavior. This means that some {@link org.junit.rules.TestRule}s, such as<a name="line.21"></a>
<span class="sourceLineNo">022</span> * {@link org.junit.rules.ErrorCollector},<a name="line.22"></a>
<span class="sourceLineNo">023</span> * {@link org.junit.rules.ExpectedException},<a name="line.23"></a>
<span class="sourceLineNo">024</span> * and {@link org.junit.rules.Timeout},<a name="line.24"></a>
<span class="sourceLineNo">025</span> * have undefined behavior when used as {@link ClassRule}s.<a name="line.25"></a>
<span class="sourceLineNo">026</span> * <p><a name="line.26"></a>
<span class="sourceLineNo">027</span> * If there are multiple<a name="line.27"></a>
<span class="sourceLineNo">028</span> * annotated {@link ClassRule}s on a class, they will be applied in an order<a name="line.28"></a>
<span class="sourceLineNo">029</span> * that depends on your JVM's implementation of the reflection API, which is<a name="line.29"></a>
<span class="sourceLineNo">030</span> * undefined, in general. However, Rules defined by fields will always be applied<a name="line.30"></a>
<span class="sourceLineNo">031</span> * before Rules defined by methods.<a name="line.31"></a>
<span class="sourceLineNo">032</span> * <p><a name="line.32"></a>
<span class="sourceLineNo">033</span> * For example, here is a test suite that connects to a server once before<a name="line.33"></a>
<span class="sourceLineNo">034</span> * all the test classes run, and disconnects after they are finished:<a name="line.34"></a>
<span class="sourceLineNo">035</span> * <pre><a name="line.35"></a>
<span class="sourceLineNo">036</span> * &#064;RunWith(Suite.class)<a name="line.36"></a>
<span class="sourceLineNo">037</span> * &#064;SuiteClasses({A.class, B.class, C.class})<a name="line.37"></a>
<span class="sourceLineNo">038</span> * public class UsesExternalResource {<a name="line.38"></a>
<span class="sourceLineNo">039</span> * public static Server myServer= new Server();<a name="line.39"></a>
<span class="sourceLineNo">040</span> *<a name="line.40"></a>
<span class="sourceLineNo">041</span> * &#064;ClassRule<a name="line.41"></a>
<span class="sourceLineNo">042</span> * public static ExternalResource resource= new ExternalResource() {<a name="line.42"></a>
<span class="sourceLineNo">043</span> * &#064;Override<a name="line.43"></a>
<span class="sourceLineNo">044</span> * protected void before() throws Throwable {<a name="line.44"></a>
<span class="sourceLineNo">045</span> * myServer.connect();<a name="line.45"></a>
<span class="sourceLineNo">046</span> * }<a name="line.46"></a>
<span class="sourceLineNo">047</span> *<a name="line.47"></a>
<span class="sourceLineNo">048</span> * &#064;Override<a name="line.48"></a>
<span class="sourceLineNo">049</span> * protected void after() {<a name="line.49"></a>
<span class="sourceLineNo">050</span> * myServer.disconnect();<a name="line.50"></a>
<span class="sourceLineNo">051</span> * }<a name="line.51"></a>
<span class="sourceLineNo">052</span> * };<a name="line.52"></a>
<span class="sourceLineNo">053</span> * }<a name="line.53"></a>
<span class="sourceLineNo">054</span> * </pre><a name="line.54"></a>
<span class="sourceLineNo">055</span> * <p><a name="line.55"></a>
<span class="sourceLineNo">056</span> * and the same using a method<a name="line.56"></a>
<span class="sourceLineNo">057</span> * <pre><a name="line.57"></a>
<span class="sourceLineNo">058</span> * &#064;RunWith(Suite.class)<a name="line.58"></a>
<span class="sourceLineNo">059</span> * &#064;SuiteClasses({A.class, B.class, C.class})<a name="line.59"></a>
<span class="sourceLineNo">060</span> * public class UsesExternalResource {<a name="line.60"></a>
<span class="sourceLineNo">061</span> * public static Server myServer= new Server();<a name="line.61"></a>
<span class="sourceLineNo">062</span> *<a name="line.62"></a>
<span class="sourceLineNo">063</span> * &#064;ClassRule<a name="line.63"></a>
<span class="sourceLineNo">064</span> * public static ExternalResource getResource() {<a name="line.64"></a>
<span class="sourceLineNo">065</span> * return new ExternalResource() {<a name="line.65"></a>
<span class="sourceLineNo">066</span> * &#064;Override<a name="line.66"></a>
<span class="sourceLineNo">067</span> * protected void before() throws Throwable {<a name="line.67"></a>
<span class="sourceLineNo">068</span> * myServer.connect();<a name="line.68"></a>
<span class="sourceLineNo">069</span> * }<a name="line.69"></a>
<span class="sourceLineNo">070</span> *<a name="line.70"></a>
<span class="sourceLineNo">071</span> * &#064;Override<a name="line.71"></a>
<span class="sourceLineNo">072</span> * protected void after() {<a name="line.72"></a>
<span class="sourceLineNo">073</span> * myServer.disconnect();<a name="line.73"></a>
<span class="sourceLineNo">074</span> * }<a name="line.74"></a>
<span class="sourceLineNo">075</span> * };<a name="line.75"></a>
<span class="sourceLineNo">076</span> * }<a name="line.76"></a>
<span class="sourceLineNo">077</span> * }<a name="line.77"></a>
<span class="sourceLineNo">078</span> * </pre><a name="line.78"></a>
<span class="sourceLineNo">079</span> * <p><a name="line.79"></a>
<span class="sourceLineNo">080</span> * For more information and more examples, see {@link org.junit.rules.TestRule}.<a name="line.80"></a>
<span class="sourceLineNo">081</span> *<a name="line.81"></a>
<span class="sourceLineNo">082</span> * @since 4.9<a name="line.82"></a>
<span class="sourceLineNo">083</span> */<a name="line.83"></a>
<span class="sourceLineNo">084</span>@Retention(RetentionPolicy.RUNTIME)<a name="line.84"></a>
<span class="sourceLineNo">085</span>@Target({ElementType.FIELD, ElementType.METHOD})<a name="line.85"></a>
<span class="sourceLineNo">086</span>public @interface ClassRule {<a name="line.86"></a>
<span class="sourceLineNo">087</span>}<a name="line.87"></a>
</pre>
</div>
</body>
</html>
|