PageSourceSearch

https://test-centric.org/blog/

html test-centric.org collected 2026-09-24 15:09:34 UTC 13,679 bytes, 291 lines download raw bytes

1<!DOCTYPE html>
2<html>
3    <head>
4        <meta charset="utf-8">
5        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
6        <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
8        <link href="/assets/bootstrap/bootstrap.css" rel="stylesheet" />
9                <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&family=Roboto+Slab:wght@400;700&family=Roboto:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap" rel="stylesheet" data-no-mirror>
10        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/themes/prism.css">
11        <link href="/assets/css/theme.css" rel="stylesheet" />
12        <link href="/assets/css/styles.css" rel="stylesheet" />
13        <link href="/css/overrides.css" rel="stylesheet" />
14
15        
15<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
15
16        
16<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
16
17        
17<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
17
18        
18<script src="https://kit.fontawesome.com/a1cad7ed9a.js" crossorigin="anonymous" data-no-mirror></script>
18
19        
19<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mermaid.min.js"></script>
19
20        
20<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/svg-pan-zoom.min.js"></script>
20
21        
21<script src="https://cdn.jsdelivr.net/npm/[email protected]/components/prism-core.min.js"></script>
21
22        
22<script src="https://cdn.jsdelivr.net/npm/[email protected]/plugins/autoloader/prism-autoloader.min.js" data-no-mirror></script>
22
23        
23<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/quicklink.umd.js"></script>
23
24	    
25        <!-- Lunr search -->
26
27        
28
29        
30
31        <title>TestCentric - Blog</title>
32    </head>
33    <body class="d-flex flex-column">
34        <div class="flex-grow-1 d-flex flex-column">
35            <div class="bg-nav">
36                <div class="container-xl py-3">
37                    <div class="row">
38                        <div class="offset-lg-2 col-12 col-lg-8 px-0">
39                            <nav class="navbar navbar-expand-md navbar-light align-items-start">
40    <a class="navbar-brand" href="/">
41                <img id="logo" src="/img/NewTestCentricLogo.png" alt="TestCentric">
42    </a>
43    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapse-topnav" aria-controls="collapse-topnav" aria-expanded="false" aria-label="Toggle navigation">
44        <span class="navbar-toggler-icon"></span>
45    </button>
46    <div id="collapse-topnav" class="collapse navbar-collapse flex-wrap">
47        <ul class="navbar-nav mr-auto">
48            
49        </ul>
50        <ul class="navbar-nav">
51                    <li class="nav-item">
52            <a class="nav-link" href="/testcentric-runner">TestCentric Runner</a>
53        </li>
54        <li class="nav-item">
55            <a class="nav-link" href="/tc-lite">TC-Lite Framework</a>
56        </li>
57        <li class="nav-item">
58            <a class="nav-link" href="/contributing">Contributing</a>
59        </li>
60        <li class="nav-item">
61            <a class="nav-link" href="/blog">Blog</a>
62        </li>
63        <li class="nav-item">
64            <a class="nav-link" href="/github">GitHub</a>
65        </li>
66
67            
68        </ul>
69    </div>
70</nav>
71                        </div>
72                    </div>
73                </div>
74            </div>
75            
76            <div class="flex-grow-1 d-flex flex-column">
77                    <!-- Titlebar -->
78                    <div id="titlebar" class="py-4">
79                        <div class="container-xl">
80                            <div class="row">
81                                <div class="offset-lg-2 col-12 col-lg-8 px-3 px-lg-0 w-100 d-flex flex-wrap align-items-end">
82                                    <div class="flex-grow-1">
83                                        <div class="breadcrumbs d-flex flex-column flex-md-row text-break">
84
85                                        </div>
86                                        <div class="text-white m-0 text-break title">
87
88Blog
89                                        </div>
90                                    </div>
91                                </div>
92                            </div>
93                        </div>
94                    </div>
95                    <!-- Under title -->
96                    <div id="undertitle">
97                        <div class="container-xl">
98                            <div class="row">
99                                    <div class="offset-lg-2 col-12 col-lg-8 bg-white">
100                                    </div>
101                                <div class="col-lg-2 d-none d-lg-block">
102                                </div>
103                            </div>
104                        </div>
105                    </div>
106
107                <!-- Body -->
108                <div class="flex-grow-1 d-flex flex-column">
109                        <div class="container-xl flex-grow-1 d-flex flex-column">
110                            <div class="row flex-grow-1 align-items-stretch">
111                                        <div id="content" class="offset-lg-2 col-12 col-lg-8 p-4 pt-md-0 bg-white">
112<div class="container-sm-height">
113    <div class="row row-sm-height">
114        <div class="col-md-9 right-border col-sm-height">
115                <div class="post-preview">
116                    <h2 class="post-title"><a href="/blog/testcentric-beta4-release">TestCentric Beta4 Release</a></h2>
117                    <p class="post-meta">Published: Saturday, December 2, 2023</p>
118<p>In  an <a href="testcentric-beta2-and-beyond.html">earlier post</a>, I talked about plans for moving ahead with TestCentric, separating it more completely from its remaining dependencies on NUnit. I predicted that the beta3 release would probably not have any new features, being concerned primarily with internal 
118changes in how the TestCentric runner and engine were structured. That turned out to be true.</p>                        <p class="small"><a href="/blog/testcentric-beta4-release">Read more...</a></p>
119                </div>
120                <div class="post-preview">
121                    <h2 class="post-title"><a href="/blog/testcentric-beta2-and-beyond">TestCentric Beta 2 and Beyond</a></h2>
122                    <p class="post-meta">Published: Saturday, September 16, 2023</p>
123<p>I released version 2.0.0-beta2 of the TestCentric Runner about two weeks ago. This release is both an ending and a beginning. On the one hand, it marks the end of a particular phase of development. On the other, it will serve as the basis for a fairly significant change in future releases.</p>
124<p>Specifically, this will be the last release in which we try to keep the code close to that of the NUnit engine and console runner.</p>                        <p class="small"><a href="/blog/testcentric-beta2-and-beyond">Read more...</a></p>
125                </div>
126                <div class="post-preview">
127                    <h2 class="post-title"><a href="/blog/net80-pluggable-agent">TestCentric .NET 8.0 Pluggable Agent</a></h2>
128                    <p class="post-meta">Published: Friday, February 24, 2023</p>
129<p>Now that the .NET 8.0 preview is out, many folks will want to experiment with
130it and possibly run tests under the TestCentric GUI. A newly released extension,
131the .NET 8.0 Pluggable Agent, makes this possible.</p>                        <p class="small"><a href="/blog/net80-pluggable-agent">Read more...</a></p>
132                </div>
133                <div class="post-preview">
134                    <h2 class="post-title"><a href="/blog/moving-to-testcentric-2.0">Moving to TestCentric 2.0</a></h2>
135                    <p class="post-meta">Published: Saturday, March 5, 2022</p>
136<p>NUnit 2.0 through 2.7 was delivered as an all-inclusive package: test framework,
137console runner and GUI runner. With NUnit 3 that changed. The framework and
138console runner became separate packages and the GUI was no longer developed.</p>                        <p class="small"><a href="/blog/moving-to-testcentric-2.0">Read more...</a></p>
139                </div>
140        </div>
141    </div>
142</div>
143                                        </div>
144                                <div class="col-lg-2 p-md-0 m-md-0 bg-body">
145                                    <div id="right-sidebar" class="sidebar px-0 px-md-3 pt-3">
146                                    </div>
147                                </div>
148                            </div>
149                        </div>
150                </div>
151            </div>
152        </div>
153
154        <!-- Footer -->
155        <div id="footer" class="p-3 text-white">
156            <div class="container-xl">
157                <div class="row">
158    <div class="offset-lg-2 col-12 col-lg-8">
159        <div class="pt-2 font-size-sm text-muted text-center">
160            Generated By <a class="text-muted" href="https://statiq.dev">Statiq</a>
161        </div>
162    </div>
163</div>
164            </div>
165        </div>
166
167        <!-- Scripts -->
168        
168<script>
169            $(document).ready(function() {
170                quicklink.listen();
171
172                // Bootstrap tooltips
173                $('[data-toggle="tooltip"]').tooltip();
174
175				// Keeps the sidebars in view on wider viewports
176				let left = null;
177				let leftParent = null;
178				let right = null;
179				let rightParent = null;
180                function stickSidebars()
181				{
182				    if (left == null) {
183                        left = $('#left-sidebar');
184                        right = $('#right-sidebar');
185                    }
186                    if (left.length) {
187                        if (window.innerWidth >= 768) {
188                            if (leftParent == null) {
189                                leftParent = left.parent()[0];
190                            }
191                            if (leftParent) {
192                                let leftRect = leftParent.getBoundingClientRect();
193                                stickSidebar(left,  leftRect);
194                            }
195                        } else {
196                            left.css('position', 'relative');
197                            if (left.css('bottom') != 0) {
198                                left.css('bottom', '0');
199                            }
200                        }
201                    }
202                    if (right.length) {
203                        if (window.innerWidth >= 768) {
204                            if (rightParent == null) {
205                                rightParent = right.parent()[0];
206                            }
207                            if (rightParent) {
208                                let rightRect = rightParent.getBoundingClientRect();
209                                stickSidebar(right,  rightRect);
210                            }
211                        } else {
212                            right.css('position', 'relative');
213                            if (right.css('bottom') != 0) {
214                                right.css('bottom', '0');
215                            }
216                        }
217                    }
218				}
219				function stickSidebar(sidebar, rect) {
220                    // Bottom
221                    if (rect.bottom > window.innerHeight) {
222                        sidebar.css('bottom', rect.bottom - window.innerHeight + "px");
223                    } else {
224                        sidebar.css('bottom', 0);
225                    }
226                    // Top
227                    if (rect.top < 0) {
228                        sidebar.css('position', 'sticky');
229                    } else {
230                        sidebar.css('position', 'absolute');
231                    }
232				}
233				$(window).on("load", function() {
234				    stickSidebars();
235				});
236                $(window).scroll(function() {
237				    stickSidebars();
238				});
239				$(window).resize(function() {
240				    stickSidebars();
241				})
242
243                // Mermaid diagrams
244                mermaid.initialize(
245                {
246                    flowchart:
247                    {
248                        useMaxWidth: false
249                    },
250					startOnLoad: false,
251					cloneCssStyles: false
252                });
253                mermaid.init(undefined, ".mermaid");
254
255                // Remove the max-width setting that Mermaid sets
256                var mermaidSvg = $('.mermaid svg');
257                mermaidSvg.addClass('img-fluid');
258                mermaidSvg.css('max-width', '');
259
260                // Make it scrollable
261				var target = document.querySelector(".mermaid svg");
262				if(target !== null)
263				{
264					var panZoom = window.panZoom = svgPanZoom(target, {
265						zoomEnabled: true,
266						controlIconsEnabled: true,
267						fit: true,
268						center: true,
269                        maxZoom: 20,
270                        zoomScaleSensitivity: 0.6
271					});
272
273                    // Do the reset once right away to fit the diagram
274                    panZoom.resize();
275                    panZoom.fit();
276                    panZoom.center();
277
278                    $(window).resize(function(){
279                        panZoom.resize();
280                        panZoom.fit();
281                        panZoom.center();
282                    });
283				}
284            });
285        </script>
285
286
287        
288
289        
290    </body>
291</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.