Package totcount
is exactly for requirements like this.
totcount
introduces a new consept "total counter". In the following example, \newtotcounter{ctest}
creates a total counter and \totvalue{ctest}
retrieves its total value (final value at the end of last compilation).
\documentclass{article}
\usepackage{totcount}
\newtotcounter{ctest}
\newenvironment{test}{%
\refstepcounter{ctest}%
\label{test:\thectest}%
\par\noindent\thectest.\hspace{1em}%
}{}
\begin{document}
\ifnum\totvalue{ctest}>2\relax
<true code>
\else
<false code>
\fi
\begin{test} content \end{test}
\begin{test} content \end{test}
% \begin{test} content \end{test}
\end{document}
In case you are curious about a direct implementation, see the following example
\documentclass{article}
\usepackage{totcount}
\newcounter{ctest}
\newcounter{ctest@total}
\setcounter{ctest@total}{-1}
\makeatletter
\AtEndDocument{%
\write\@auxout{\string\setcounter{ctest@total}{\arabic{ctest}}}%
}
\makeatother
\newenvironment{test}{%
\refstepcounter{ctest}%
\label{test:\thectest}%
\par\noindent\thectest.\hspace{1em}%
}{}
\begin{document}
\ifnum\arabic{ctest@total}=-1\relax
<a second run is required>
\else
\ifnum\arabic{ctest@total}>2\relax
<true code>
\else
<false code>
\fi
\fi
\begin{test} content \end{test}
\begin{test} content \end{test}
% \begin{test} content \end{test}
\end{document}