You'll need to manually change the ordering of the defined attributes. If you look in the .glo file for your MWE, you should see the location attributes are pageglsnumberformat (the default format) and pagehyperit (the format used when you combine format=hyperit and counter=page):
(indexentry :tkey (("Test" "\\glossaryentryfield{test}{\\glsnamefont{Test}}{\\nopostdesc }{\\relax }") ) :locref "{}{1}" :attr "pagehyperit" )
(indexentry :tkey (("Test" "\\glossaryentryfield{test}{\\glsnamefont{Test}}{\\nopostdesc }{\\relax }") ) :locref "{}{1}" :attr "pageglsnumberformat" )
The default .xdy file created by glossaries lists the pageglsnumberformat attribute before the pagehyperit attribute. This order needs to be swapped. There are two possibilities:
(define-attributes ( ("pagehyperit" "pageglsnumberformat")))
This will result in just one location using the hyperit format:

The second option is:
(define-attributes ( ("pagehyperit") ("pageglsnumberformat")))
This will result in two locations. The first using the hyperit format and the second location using the default pageglsnumberformat format:

Either way, if you manually edit the .xdy file you must add \noist to your document to prevent the .xdy file from being overridden:
\documentclass{article}
\usepackage{hyperref}
\usepackage[xindy]{glossaries}
\newglossaryentry{test}{name={Test},description={\nopostdesc}}
\noist
\makeglossaries
\begin{document}
\glsadd[format=hyperit]{test}
\glsadd{test}
\printglossary[style=index]
\end{document}
Edit: If you don't want to manually edit the .xdy file, you'll need to redefine some of glossaries internal commands.
First case: redefine \@gls@addpredefinedattributes to list the attributes in your desired order:
\documentclass{article}
\usepackage{hyperref}
\usepackage[xindy]{glossaries}
\makeatletter
\renewcommand*{\@gls@addpredefinedattributes}{%
\GlsAddXdyAttribute{hyperit}
\GlsAddXdyAttribute{glsnumberformat}
}
\makeatother
\newglossaryentry{test}{name={Test},description={\nopostdesc}}
\makeglossaries
\begin{document}
\glsadd[format=hyperit]{test}
\glsadd{test}
\printglossary[style=index]
\end{document}
The second case is more complicated (\string" is used in case the double quote has been made active, e.g. via ngerman):
\documentclass{article}
\usepackage{hyperref}
\usepackage[xindy]{glossaries}
\makeatletter
\renewcommand*{\@gls@addpredefinedattributes}{%
\GlsAddXdyAttribute{hyperit}
\GlsAddXdyAttribute{glsnumberformat}
}
\renewcommand*\@glsaddxdyattribute[2]{%
\edef\@xdyattributes{\@xdyattributes) ^^J (\string"#1\string") ^^J
(\string"#2#1\string"}%
\expandafter\toks@\expandafter{\@xdylocref}%
\edef\@xdylocref{\the\toks@ ^^J%
(markup-locref
:open \string"\string~n%
\expandafter\string\csname glsX#2X#1\endcsname
\string" ^^J
:close \string"\string" ^^J
:attr \string"#2#1\string")}%
\expandafter\gdef\csname glsX#2X#1\endcsname##1##2{%
\setentrycounter[##1]{#2}\csname #1\endcsname{##2}%
}%
}
\makeatother
\newglossaryentry{test}{name={Test},description={\nopostdesc}}
\makeglossaries
\begin{document}
\glsadd[format=hyperit]{test}
\glsadd{test}
\printglossary[style=index]
\end{document}