Это старый поток, но я боролся с той же проблемой, и я понял, что вы действительно можете просто запустить MSTest для каждой библиотеки DLL в полном решении, и это не вызовет никаких проблем. MSTest ищет методы в сборках, помеченных атрибутом [TestMethod], и сборкам, которые не являются "тестовыми" сборками, просто не будут иметь методы, украшенные этим атрибутом. Таким образом, вы получаете «Нет тестов для выполнения». сообщение обратно и никакого вреда не сделано.
Так, например, в NAnt вы можете сделать это:
<target name="default">
<foreach item="File" property="filename">
<in>
<items>
<include name="**\bin\Release\*.dll" />
</items>
</in>
<do>
<echo message="${filename}" />
<exec program="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe">
<arg value="/testcontainer: ${filename}" />
<arg value="/nologo" />
</exec>
</do>
</foreach>
</target>
и он будет запускать все методы тестирования в каждой DLL в каждой папке bin \ Release в решении. Те, которые не являются тестовыми dll, вернут «Нет тестов для выполнения». и те, у кого есть тесты, будут запускать тесты. Единственная часть, которую я еще не выяснил, - это то, что (в NAnt) выполнение останавливается, когда команда возвращает ненулевое значение. Поэтому, если какой-либо модульный тест не пройден, он не будет продолжать выполнять какие-либо тесты в последующих сборках. Это не очень хорошо, но если все тесты пройдут, все они будут запущены.