今天想在自動整合服務器上用MSTest,但遺憾的是MSTest.exe不能使用目錄,命名空間等,因此需要將MSTest轉換為Nunit1.
1. 首先移除MSTest的程式集,引入Nunit.Framework.dll
2.然後使用如下Ruby指令碼.
all_files= Dir[File.join("D:", "UnitTest/**/**/**")];all_files.each { |x| if x.to_s().include?(".cs") begin puts x.to_s f = File.open(x.to_s, "r+") content="" f.each { |line| content+=line } s=content.gsub(/\[TestMethod\]/, "[Test]").gsub(/\[TestMethod\(\)\]/, "[Test]"). gsub(/\[TestClass\]/, "[TestFixture]").gsub(/\[TestClass\(\)\]/, "[TestFixture]"). gsub(/\[ClassInitialize\]/, "[TestFixtureSetUp]").gsub(/\[ClassInitialize\(\)\]/, "[TestFixtureSetUp]"). gsub(/\[ClassCleanup\]/, "[TestFixtureTearDown]").gsub(/\[ClassCleanup\(\)\]/, "[TestFixtureTearDown]"). gsub(/\[TestInitialize\]/, "[SetUp]").gsub(/\[TestInitialize\(\)\]/, "[SetUp]"). gsub(/\[TestCleanUp\]/, "[TearDown]").gsub(/\[TestCleanUp\(\)\]/, "[TearDown]"). gsub(/\[AssemblyInitialize\]/, ""). gsub(/\[AssemblyInitialize\(\)\]/, ""). gsub(/\[AssemblyCleanUp\]/, "").gsub(/\[AssemblyCleanUp\(\)\]/, ""). gsub(/namespace\s+?/,"using NUnit.Framework;\n\nnamespace ") f.close File.delete(x) new= File.new(x, "w+") new.puts s new.close s="" rescue =>e end end}
3. 移除MSTest的部分特性的東西,如TestContext等,這個應該很少了
然後,就順利轉換成功了