trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

AtCoder Unit Test導入メモ

AtCoder Unit Test導入しました。大変良き。

qiita.com

注意点

説明をろくに読まないで使おうとしたら引っかかった点

言語選択

初期設定はJava。ほかの言語で使うならアドオンマネージャーから設定変更が必要@firefox

f:id:trsing:20200810143548p:plain

namespaceはAtCoder、クラス名はProgram、クラス・メソッドはpublic
namespace AtCoder
{
    public class Program
    {
        public static void Main(string[] args)
        {
        }
}

改行に注意

現時点では出力の最後は改行じゃないとテスト通らない。

その他

ガワを使いまわしているため、生成したテストを貼り付けるのに「すべて選択&ペースト」があれば便利。探せばあるんじゃね*1という気がしますがせっかくなのでアドオン作りました。作り方メモ。

環境 Visual Studio Community 2007
手順
  • Visual Studio SDKをインストールする
    ツール→ツールと機能を取得→「個別のコンポーネント」タブ、Visual Studio SDK
    f:id:trsing:20200810145038p:plain
    f:id:trsing:20200810145256p:plain

  • 新規作成・プロジェクト:VSIX Project
    f:id:trsing:20200810145703p:plain

  • 新しい項目の追加:Custom Command
    プロジェクトに項目を追加します。 f:id:trsing:20200810145621p:plain

  • コマンドの作成
    追加された.csファイルを編集してコピー&ペーストのコマンドを作成。

private DTE _dte;
public static async Task InitializeAsync(AsyncPackage package)
{
    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(package.DisposalToken);

    OleMenuCommandService commandService = await package.GetServiceAsync((typeof(IMenuCommandService))) as OleMenuCommandService;
    Instance = new SelectAllandPaste(package, commandService);
    Instance._dte = await package.GetServiceAsync(typeof(DTE)) as DTE;
    Assumes.Present(Instance._dte);
}

private void Execute(object sender, EventArgs e)
{
    ThreadHelper.ThrowIfNotOnUIThread();
    _dte.ExecuteCommand("Edit.SelectAll");
    ((TextSelection)_dte.ActiveDocument.Selection).Paste();
}
  • 右クリックメニューに追加
    .vsctを編集してテキストエディタ上で右クリックしたとき出てくるメニューにコマンドを追加
<Groups>
  <Group guid="guidSelectAllandPastePackageCmdSet" id="MyMenuGroup" priority="0x0600">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
  </Group>
</Groups>
  • ビルドして.vsixファイルを実行
    追加された
    f:id:trsing:20200810152435p:plain

参考

rksoftware.hatenablog.com

qiita.com

baba-s.hatenablog.com

*1:Macros for Visual Studio使うのが楽じゃないかなー