/usr/share/doc/junit4/api/src-html/org/junit/Rule.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 | <!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 fields that reference rules or methods that return a rule. A field must be public, not<a name="line.9"></a>
<span class="sourceLineNo">010</span> * static, and a subtype of {@link org.junit.rules.TestRule} (preferred) or<a name="line.10"></a>
<span class="sourceLineNo">011</span> * {@link org.junit.rules.MethodRule}. A method must be public, not static,<a name="line.11"></a>
<span class="sourceLineNo">012</span> * and must return a subtype of {@link org.junit.rules.TestRule} (preferred) or<a name="line.12"></a>
<span class="sourceLineNo">013</span> * {@link org.junit.rules.MethodRule}.<a name="line.13"></a>
<span class="sourceLineNo">014</span> * <p><a name="line.14"></a>
<span class="sourceLineNo">015</span> * The {@link org.junit.runners.model.Statement} passed<a name="line.15"></a>
<span class="sourceLineNo">016</span> * to the {@link org.junit.rules.TestRule} will run any {@link Before} methods,<a name="line.16"></a>
<span class="sourceLineNo">017</span> * then the {@link Test} method, and finally any {@link After} methods,<a name="line.17"></a>
<span class="sourceLineNo">018</span> * throwing an exception if any of these fail. If there are multiple<a name="line.18"></a>
<span class="sourceLineNo">019</span> * annotated {@link Rule}s on a class, they will be applied in order of fields first, then methods.<a name="line.19"></a>
<span class="sourceLineNo">020</span> * However, if there are multiple fields (or methods) they will be applied in an order<a name="line.20"></a>
<span class="sourceLineNo">021</span> * that depends on your JVM's implementation of the reflection API, which is<a name="line.21"></a>
<span class="sourceLineNo">022</span> * undefined, in general. Rules defined by fields will always be applied<a name="line.22"></a>
<span class="sourceLineNo">023</span> * before Rules defined by methods. You can use a {@link org.junit.rules.RuleChain} if you want<a name="line.23"></a>
<span class="sourceLineNo">024</span> * to have control over the order in which the Rules are applied.<a name="line.24"></a>
<span class="sourceLineNo">025</span> * <p><a name="line.25"></a>
<span class="sourceLineNo">026</span> * For example, here is a test class that creates a temporary folder before<a name="line.26"></a>
<span class="sourceLineNo">027</span> * each test method, and deletes it after each:<a name="line.27"></a>
<span class="sourceLineNo">028</span> * <pre><a name="line.28"></a>
<span class="sourceLineNo">029</span> * public static class HasTempFolder {<a name="line.29"></a>
<span class="sourceLineNo">030</span> * &#064;Rule<a name="line.30"></a>
<span class="sourceLineNo">031</span> * public TemporaryFolder folder= new TemporaryFolder();<a name="line.31"></a>
<span class="sourceLineNo">032</span> *<a name="line.32"></a>
<span class="sourceLineNo">033</span> * &#064;Test<a name="line.33"></a>
<span class="sourceLineNo">034</span> * public void testUsingTempFolder() throws IOException {<a name="line.34"></a>
<span class="sourceLineNo">035</span> * File createdFile= folder.newFile(&quot;myfile.txt&quot;);<a name="line.35"></a>
<span class="sourceLineNo">036</span> * File createdFolder= folder.newFolder(&quot;subfolder&quot;);<a name="line.36"></a>
<span class="sourceLineNo">037</span> * // ...<a name="line.37"></a>
<span class="sourceLineNo">038</span> * }<a name="line.38"></a>
<span class="sourceLineNo">039</span> * }<a name="line.39"></a>
<span class="sourceLineNo">040</span> * </pre><a name="line.40"></a>
<span class="sourceLineNo">041</span> * <p><a name="line.41"></a>
<span class="sourceLineNo">042</span> * And the same using a method.<a name="line.42"></a>
<span class="sourceLineNo">043</span> * <pre><a name="line.43"></a>
<span class="sourceLineNo">044</span> * public static class HasTempFolder {<a name="line.44"></a>
<span class="sourceLineNo">045</span> * private TemporaryFolder folder= new TemporaryFolder();<a name="line.45"></a>
<span class="sourceLineNo">046</span> *<a name="line.46"></a>
<span class="sourceLineNo">047</span> * &#064;Rule<a name="line.47"></a>
<span class="sourceLineNo">048</span> * public TemporaryFolder getFolder() {<a name="line.48"></a>
<span class="sourceLineNo">049</span> * return folder;<a name="line.49"></a>
<span class="sourceLineNo">050</span> * }<a name="line.50"></a>
<span class="sourceLineNo">051</span> *<a name="line.51"></a>
<span class="sourceLineNo">052</span> * &#064;Test<a name="line.52"></a>
<span class="sourceLineNo">053</span> * public void testUsingTempFolder() throws IOException {<a name="line.53"></a>
<span class="sourceLineNo">054</span> * File createdFile= folder.newFile(&quot;myfile.txt&quot;);<a name="line.54"></a>
<span class="sourceLineNo">055</span> * File createdFolder= folder.newFolder(&quot;subfolder&quot;);<a name="line.55"></a>
<span class="sourceLineNo">056</span> * // ...<a name="line.56"></a>
<span class="sourceLineNo">057</span> * }<a name="line.57"></a>
<span class="sourceLineNo">058</span> * }<a name="line.58"></a>
<span class="sourceLineNo">059</span> * </pre><a name="line.59"></a>
<span class="sourceLineNo">060</span> * <p><a name="line.60"></a>
<span class="sourceLineNo">061</span> * For more information and more examples, see<a name="line.61"></a>
<span class="sourceLineNo">062</span> * {@link org.junit.rules.TestRule}.<a name="line.62"></a>
<span class="sourceLineNo">063</span> *<a name="line.63"></a>
<span class="sourceLineNo">064</span> * @since 4.7<a name="line.64"></a>
<span class="sourceLineNo">065</span> */<a name="line.65"></a>
<span class="sourceLineNo">066</span>@Retention(RetentionPolicy.RUNTIME)<a name="line.66"></a>
<span class="sourceLineNo">067</span>@Target({ElementType.FIELD, ElementType.METHOD})<a name="line.67"></a>
<span class="sourceLineNo">068</span>public @interface Rule {<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>
</pre>
</div>
</body>
</html>
|